使用expect指令碼實現linux的互動式操作

2021-08-17 07:24:47 字數 2146 閱讀 1208

[root@localhost ~]$ tar -zxvf tcl8.6.8-src.tar.gz

[root@localhost ~]$ cd tcl8.6.8/unix

[root@localhost ~]$ ./configure --prefix=/usr/tcl --enable-shared

[root@localhost ~]$ make

[root@localhost ~]$ make install

[root@localhost ~]$ cp tclunixport.h ../generic

安裝完畢以後,把unix目錄下面的tclunixport.h copy到子目錄generic中。

暫時不要刪除tcl源**,因為expect的安裝過程還需要用。

[root@localhost ~]$ tar -zxvf expect5.45.tar.gz

[root@localhost ~]$ cd expect5.45

[root@localhost ~]$ ./configure --prefix=/usr/expect --with-tcl=/usr/tcl

/lib --with-tclinclude=../tcl8.6.8/generic

[root@localhost ~]$ make

[root@localhost ~]$ make install

[root@localhost ~]$ ln -s /usr/tcl/bin/expect /usr/expect/bin/expect

[username@localhost ~]$ vi expectshell  //新增以下內容

#!/usr/expect/bin/expect //expect指令碼命令的位置

set remote_ip "192.168.1.103"

set pass_wd "some password"

spawn scp tcl8.6.8-src.tar.gz [email protected]:/home/username/tcl.tar.gz //spawn 後面跟乙個命令,開啟乙個會話,這裡是乙個copy檔案的命令

expect "*assword:"

send "$\r"

//輸入密碼

spawn ssh [email protected] //開啟另乙個,ssh登入

expect "*assword: "

send "$\r"

expect "last login:*"

send "ifconfig\r"

//檢視ip資訊

expect "*flags*"

send "su root\r"

//切換root使用者

expect "*assword:"

send "$\r"

send "cd /usr\r"

send "mkdir test\r"

send exit\r"

expect eof //結束

儲存後賦予許可權,執行檢查結果

[username@localhost ~]$ chmod 755 expectshell

[username@localhost ~]$ ./expectshell

#!/usr/bin/expect -f 

if

set timeout -1

set remote_user[lindex $argv 0 ] //接收第乙個引數,並登入使用者名稱

set remote_host [lindex $argv 1 ] //接收第乙個引數,並設定ip

set remote_pwd [lindex $argv 2 ]//接收第二個引數,並設定密碼

set timeout -1

//設定超時時間

spawn ssh $@$ //傳送ssh請滶

expect //第一次ssh連線會提示yes/no,繼續

"*password:" \r" } //出現密碼提示,傳送密碼

} interact //互動模式,使用者會停留在遠端伺服器上面.

expect實現自動登入指令碼

寫在前面 目前在公司是一人一台虛擬機器,大多數工作都要在虛擬機器上完成,為此每天要執行很多次 ssh 指令登入虛擬機器 有很多方式解決這個問題,如使用xshell securecrt等工具記錄常用的連線,我就寫了乙個簡單的指令碼實現一鍵登入 login.sh指令碼內容如下 usr bin expec...

使用expect實現自動互動,自動登入指令碼

使用expect實現自動互動,自動登入指令碼 指令碼 如下 usr bin expect set timeout 30 spawn ssh l username 192.168.1.1 expect password send ispass r interact 1.usr bin expect 這...

expect使用ssh登入指令碼

基礎篇 u s ssh spawn ssh l root 10.10.10.24 等待響應,第一次登入往往會提示是否永久儲存 rsa 到本機的 know hosts 列表中 等到回答後,在提示輸出密碼 之後就直接提示輸入密碼 expect yes no password host interact ...