linux expect自動登入ssh,ftp
http://blog.51yip.com/linux/1462.html
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 { //返回資訊匹配
- \"*yes/no\" { send \"yes\\r\"; exp_continue} //第一次ssh連線會提示yes/no,繼續
- \"*password:\" { send \"$password\\r\" } //出現密碼提示,傳送密碼
- }
- interact //互動模式,使用者會停留在遠端伺服器上面.
執行結果如下:
- root@ubuntu:/home/zhangy# ./test.exp 192.168.1.130 admin
- spawn ssh root@192.168.1.130
- 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 {
-
\"*yes/no\" { send \"yes\\r\"; exp_continue}
-
\"*password:\" { send \"$password\\r\" }
-
}
- interact
執行結果如下:
- root@ubuntu:/home/zhangy# ./web.exp
- spawn ssh root@192.168.1.130
- 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 {
-
\"*yes/no\" { send \"yes\\r\"; exp_continue}
-
\"*password:\" { send \"$password\\r\" }
-
}
-
expect \"#*\"
-
send \"pwd\\r\"
-
send \"exit\\r\"
- expect eof
執行結果如下:
- root@ubuntu:/home/zhangy# ./test3.exp
- spawn ssh root@192.168.1.130
- root@192.168.1.130'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.
3,遠端登入到ftp,並且下載檔案
點選(此處)摺疊或開啟
- 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 {
- \"*file\" { send_user \"local $_dir No such file or directory\";send \"quit\\r\" }
- \"*now*\" { send \"get $dir/$file $dir/$file\\r\"}
- }
- expect {
- \"*Failed\" { send_user \"remote $file No such file\";send \"quit\\r\" }
- \"*OK\" { send_user \"$file has been download\\r\";send \"quit\\r\"}
- }
- 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.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26250550/viewspace-1664209/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- linux expect詳解(ssh自動登入)Linux
- ssh直接帶密碼登入Linux,Linux自動密碼登陸利器sshpass密碼Linux
- Linux/Unix shell內嵌expect自動配置多臺主機SSH互信Linux
- Linux ssh登入命令Linux
- Assh 自動登入 SSH/SFTP 的小工具FTP
- 通過expect實現ssh協議自動輸密碼協議密碼
- SSH 自動遠端登陸
- Linux 遠端 ssh 登入Linux
- Linux配置SSH免登入Linux
- Linux修改SSH登入埠Linux
- linux使用SSH登入慢Linux
- 【expect】用expect實現scp/ssh-copy-id的非互動
- Linux伺服器---ssh登入Linux伺服器
- Linux SSH無密碼登入Linux密碼
- root 登入 ftpFTP
- 自動化運維 Expect運維
- ssh自動登陸和scp自動拷貝檔案
- Linux——ssh登入很慢解決方法Linux
- linux 設定ssh 免密登入Linux
- linux下登入ftp, lftp命令詳解LinuxFTP
- Mac OS X下配置遠端Linux 伺服器SSH金鑰認證自動登入MacLinux伺服器
- Linux更改SSH遠端登入埠教程Linux
- linux ssh公鑰免密碼登入Linux密碼
- opensuse linux配置支援ssh及xmanager登入Linux
- Linux - Ftp客戶端安裝、建立Ftp使用者和登入LinuxFTP客戶端
- lubuntu自動登入(lxde)Ubuntu
- windows自動登入linux 並執行指令碼WindowsLinux指令碼
- Linux - 配置SSH免密登入 - “ssh-keygen”的基本用法Linux
- Linux 配置 SSH 秘鑰免密碼登入Linux密碼
- Linux下配置ssh免密遠端登入Linux
- Linux之ssh-copy-id免密登入Linux
- iTerm2下配置ssh自動登入和使用lrzsz上傳下載
- [Linux] SSH配置了免密碼登入,登入時還要輸入密碼Linux密碼
- SecureCRT - 自動登入跳轉Securecrt
- RHCE_LAB(2)SSH遠端登入自動驗證(不輸入使用者登入密碼)的實現薦密碼
- Gitlab自動部署之三:Linux免密登入GitlabLinux
- linux配置超時不操作自動退出登入TMOUTLinux
- linux ssh免登陸Linux