Expect是Unix/Linux系統中用來進行自動化控制和測試的軟件工具,它是Tcl腳本語言的一個擴展,應用在交互式軟件中如telnet,ftp,ssh,rsync等。下面是一個用expect腳本登陸遠程機器的示例:linux
#!/usr/bin/expect
set host [lindex $argv 0]
set passwd [lindex $argv 1]
spawn ssh root@$host
expect {
"yes/no" {send "yes\r";exp_continue}
"password:" {send "$passwd\r"}
}
interactshell
其中expect位於linux下的/usr/bin/目錄下
set 是設置變量的指令 host和passwd都是變量
在shell腳本中$1表示第一個參數,$2表示第二個參數,可是在expect中
第一個參數用 [lindex $argv 0] 表示,第二個參數用 [lindex $argv 1]表示
spawn 後面跟的是shell命令
expect {}裏是交互的過程
首次ssh登錄時會詢問是否登錄,而後輸入密碼
exp_continue的做用是繼續下一個交互
interact的做用是保持遠程鏈接不退出ssh