linux expect自動登入ssh,ftp

2021-07-14 22:25:41 字數 3737 閱讀 2790

參考

expect是一種能夠按照指令碼內容裡面設定的方式與互動式程式進行「會話」的程式。根據指令碼內容,expect可以知道程式會提示或反饋什麼內容以及 什麼是正確的應答。它是一種可以提供「分支和巢狀結構」來引導程式流程的解釋型指令碼語言。

shell功能很強大,但是不能實現有互動功能的多機器之前的操作,例如ssh和ftp.而expect可以幫助我們來實現.

一,安裝expect

yum install expect 

其實expect根bash形勢上差不多的.

二,例項

1,ssh實現自動登入,並停在登入伺服器上

檢視複製列印?

#!/usr/bin/expect -f 

set ip [lindex 

$argv

0 ] 

//接收第乙個引數,並設定ip

set password [lindex 

$argv

1 ] 

//接收第二個引數,並設定密碼

set timeout 10 

//設定超時時間

spawn ssh root@$ip

//傳送ssh請滶

expect  

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

"*password:"

//出現密碼提示,傳送密碼

} interact 

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

執行結果如下: 檢視

複製列印?

root@ubuntu:/home/zhangy# ./test.

exp192.168.1.130 admin 

spawn ssh [email protected] 

last login: fri sep 

7 10:47:43 2012 from 192.168.1.142 

[root@linux ~]# 

這個例子有統一的介面,根據ip和密碼可以連線到不同的機器.如果你嫌輸入ip和密碼麻煩,看下面的例子 檢視

複製列印?

#!/usr/bin/expect -f 

set ip 192.168.1.130 

set password admin 

set timeout 10 

spawn ssh root@$ip

expect  

"*password:" } 

interact 

執行結果如下: 檢視

複製列印?

root@ubuntu:/home/zhangy# ./web.

expspawn ssh [email protected] 

last login: fri sep 

7 12:59:02 2012 from 192.168.1.142 

[root@linux ~]# 

2,ssh遠端登入到伺服器,並且執行命令,執行完後並退出

檢視複製列印?

#!/usr/bin/expect -f 

set ip 192.168.1.130 

set password admin 

set timeout 10 

spawn ssh root@$ip

expect  

"*password:" } 

expect 

"#*"

send 

"pwd\r"

send 

"exit\r"

expect eof 

執行結果如下: 檢視

複製列印?

root@ubuntu:/home/zhangy# ./test3.

expspawn ssh [email protected] 

[email protected]'s password: 

last login: fri sep 

7 14:05:07 2012 from 116.246.27.90 

[root@localhost ~]# pwd 

/root 

[root@localhost ~]# 

exit

logout 

connection to 192.168.1.130 closed.  檢視

複製列印?

#!/usr/bin/expect -f 

set ip [lindex 

$argv

0 ] 

set dir [lindex 

$argv

1 ] 

set file [lindex 

$argv

2 ] 

set timeout 10 

spawn ftp 

$ipexpect 

"name*"

send 

"zwh\r"

expect 

"password:*"

send 

"zwh\r"

expect 

"ftp>*"

send 

"lcd $dir\r"

expect  

"*now*" } 

expect  

"*ok" } 

expect eof 

執行結果如下: 檢視

複製列印?

root@ubuntu:/home/zhangy# ./test2.

exp192.168.1.130 /

var/www/www aaa.html 

spawn ftp 192.168.1.130 

connected to 192.168.1.130. 

220 (vsftpd 2.0.5) 

name (192.168.1.130:root): zwh 

331 please specify the password. 

password: 

230 login successful. 

remote system type is unix. 

using binary mode to transfer files. 

ftp> lcd /var/www/www 

local directory now /var/www/www 

ftp> get /var/www/www/aaa.html /

var/www/www/aaa.html 

local: /var/www/www/aaa.html remote: /

var/www/www/aaa.html 

200 port command successful. consider using pasv. 

150 opening binary mode data connection 

for/

var/www/www/aaa.html (66 bytes). 

226 file send ok. 

66 bytes received in 0.00 secs (515.6 kb/s) 

quit aaa.html has been download 

221 goodbye.  

linux expect自動登入ssh,ftp

expect是一種能夠按照指令碼內容裡面設定的方式與互動式程式進行 會話 的程式。根據指令碼內容,expect可以知道程式會提示或反饋什麼內容以及 什麼是正確的應答。它是一種可以提供 分支和巢狀結構 來引導程式流程的解釋型指令碼語言。shell功能很強大,但是不能實現有互動功能的多機器之前的操作,例...

linux expect自動登入ssh,ftp

一,安裝expect yum install expect 其實expect根bash形勢上差不多的.二,例項 1,ssh實現自動登入,並停在登入伺服器上檢視 複製列印?usr bin expect f set ip lindex argv 0 接收第乙個引數,並設定ip set password ...

linux expect自動登入ssh,ftp

expect是一種能夠按照指令碼內容裡面設定的方式與互動式程式進行 會話 的程式。根據指令碼內容,expect可以知道程式會提示或反饋什麼內容以及 什麼是正確的應答。它是一種可以提供 分支和巢狀結構 來引導程式流程的解釋型指令碼語言。shell功能很強大,但是不能實現有互動功能的多機器之前的操作,例...