一、定義:expect是linux上的一種人機交互的一套工具,它里面的命令能完成數(shù)據(jù)的接受、發(fā)送以及新進程的啟動。
二、參數(shù)
spawn:發(fā)起一個新的啟動進程,如:spawn ssh perfadmin@10.124.X.X (該命令是完成對10.124.X.X 的ssh登錄),spawn scp 本地文件?perfadmin@10.124.X.X:遠程機器的地方(啟動了scp,將本地文件拷貝到10.124.X.X機器指定的地方)
expect:接收交互進程中發(fā)送的數(shù)據(jù),在接收數(shù)據(jù)中可以使用正則表達式匹配。如我們平常的ssh登錄后,會給一個如下提示:

expect接收內(nèi)容為類似上圖紅色部。對于上面的情況expect命令為:expect "*password"
send:接收進程發(fā)送的數(shù)據(jù)
interact:繼續(xù)本次的回話
expect eof:結(jié)束本次的回話
exp_continue:匹配多個字符串在執(zhí)行動作后加此命令
三、舉例說明
eg:連接10.124.X.X機器,并在10.124.X.X機器上執(zhí)行刪除文件和啟動nmon
#!/usr/bin/expect? 目的是為了引用expect命令
spawn ssh root@10.124.X.X? ? ?#連接10.124這臺機器
expect? "*password:"? ?#接受到password這個詞語是
send? "1qaz2wsx\r"? ?#就輸入密碼
expect "Last login:*"? ?#然后接受到Last login時
send "cd /home/root/wang\r"? #將目錄切換到 wang這個目錄
send "rm -rf testwang.nmon\r"? ?#繼續(xù)輸入刪除testwang.nmon命令
send "./nmon -F 20180411.nmon -t -s 10 -c 100"? ?#繼續(xù)執(zhí)行文件下的nmon命令
expect eof? #停機本次回話