一、定義:expect是linux上的一種人機(jī)交互的一套工具烟逊,它里面的命令能完成數(shù)據(jù)的接受姐帚、發(fā)送以及新進(jìn)程的啟動(dòng)吏垮。
二、參數(shù)
spawn:發(fā)起一個(gè)新的啟動(dòng)進(jìn)程罐旗,如:spawn ssh perfadmin@10.124.X.X (該命令是完成對10.124.X.X 的ssh登錄)膳汪,spawn scp 本地文件?perfadmin@10.124.X.X:遠(yuǎn)程機(jī)器的地方(啟動(dòng)了scp,將本地文件拷貝到10.124.X.X機(jī)器指定的地方)
expect:接收交互進(jìn)程中發(fā)送的數(shù)據(jù)九秀,在接收數(shù)據(jù)中可以使用正則表達(dá)式匹配遗嗽。如我們平常的ssh登錄后,會給一個(gè)如下提示:
expect接收內(nèi)容為類似上圖紅色部颤霎。對于上面的情況expect命令為:expect "*password"
send:接收進(jìn)程發(fā)送的數(shù)據(jù)
interact:繼續(xù)本次的回話
expect eof:結(jié)束本次的回話
exp_continue:匹配多個(gè)字符串在執(zhí)行動(dòng)作后加此命令
三媳谁、舉例說明
eg:連接10.124.X.X機(jī)器涂滴,并在10.124.X.X機(jī)器上執(zhí)行刪除文件和啟動(dòng)nmon
#!/usr/bin/expect? 目的是為了引用expect命令
spawn ssh root@10.124.X.X? ? ?#連接10.124這臺機(jī)器
expect? "*password:"? ?#接受到password這個(gè)詞語是
send? "1qaz2wsx\r"? ?#就輸入密碼
expect "Last login:*"? ?#然后接受到Last login時(shí)
send "cd /home/root/wang\r"? #將目錄切換到 wang這個(gè)目錄
send "rm -rf testwang.nmon\r"? ?#繼續(xù)輸入刪除testwang.nmon命令
send "./nmon -F 20180411.nmon -t -s 10 -c 100"? ?#繼續(xù)執(zhí)行文件下的nmon命令
expect eof? #停機(jī)本次回話