下面獻上一個簡單的人機交互腳本,用來展示expect方法的強大而美妙的功能。
該腳本能夠檢測ssh命令執行之後的提示語,自動匹配完成密碼輸入。
##########################################################
### 複製下面的腳本,保存到文件ssh.sh中即可執行。
### 1、若沒有執行權限,通過 chmod a+x ssh.sh 添加;
### 2、若文件ssh.sh在windows下編輯,請確保語系正確,可在linux上通過 dos2unix ssh.sh 轉換;
### 3、若缺少expect,則需要先安裝之,詳情請參考本人的另外一篇博文《開源軟件expect軟件安裝》;
##########################################################
#!/usr/bin/expect -f
### input parameters
set REMOTE_IP [lindex $argv 0]
set REMOTE_HOSTNAME [lindex $argv 1]
set PASSWD [lindex $argv 2]
set REMOTE_CMD [lindex $argv 3]
# set REMOTE_IP 192.168.200.129
# set REMOTE_HOSTNAME root
# set PASSWD xos123
# set REMOTE_CMD ls -al /home
### variables
set timeout 10
### expect ssh
# spawn ssh -t root@192.168.200.129 "ls -al /home"
spawn ssh -t ${REMOTE_HOSTNAME}@${REMOTE_IP} "${REMOTE_CMD}"
expect {
"*\(yes/no\)?" { send "yes\\r"; exp_continue }
"*password:" { send "${PASSWD}\r" }
}
expect eof
###