linux expect自動登入ssh,ftp

2021-07-16 08:05:15 字數 3277 閱讀 1821

一,安裝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.exp 192.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.exp

spawn 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.exp

spawn 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 $ip

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

linux expect自動登入ssh,ftp

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