expect是乙個用來處理互動的工具,通常用於需要手動輸入資料的場景,可在指令碼中使用expect來實現自動化。
首先檢視系統中是否有安裝expect。
whereis expect
expect工具是依賴tcl的,所以也需要安裝tcl。
ln -s /usr/local/bin/expect /usr/bin/expect注意這裡的configure命令需要使用--with-tclinclude選項傳入tcl安裝包中的generic資料夾路徑。
安裝完成之後執行expect命令,檢視是否安裝成功。
$ expect
expect1.1>
expect指令碼中常用的命令包括spawn, expect, send, interact等。
spawn
該命令用於啟動乙個子程序,執行後續命令
expect
該命令從程序接受字串,如果接受的字串和期待的字串不匹配,則一直阻塞,直到匹配上或者等待超時才繼續往下執行
send
向程序傳送字串,與手動輸入內容等效,通常字串需要以』\r』結尾。
interact
該命令將控制權交給控制台,之後就可以進行人工操作了。通常用於使用指令碼進行自動化登入之後再手動執行某些命令。如果指令碼中沒有這一條語句,指令碼執行完將自動退出。
set timeout 30
設定超時時間timeout為30s,expect命令阻塞超時時會自動往下繼續執行。將timeout配置為-1時表示expect一直阻塞直到與期待的字串匹配上才繼續往下執行。超時時間timeout預設為10s。
[lindex $ar** n]
可以在指令碼中使用該命令獲取在指令碼執行時傳入的第n個引數。這裡ar**為傳入的引數,另外argc表示傳入引數的個數,$ar**0表示指令碼名字。
另外我們也可以使用 [lrange $ar** sn en] 命令獲取第sn到第en個引數。
#!/usr/bin/expect
set timeout -1
set user [lindex $ar** 0]
set password [lindex $ar** 1]
set cmd_prompt "# "
spawn su $
expect $
send "$\r"
expect $
expect "100%"
expect $
send "/opt/tomcat/bin/shutdown.sh\r"
expect $
send "/opt/tomcat/bin/startup.sh\r"
expect eof
#interact
# 所有指令碼必須以expect eof或者interact結束,一般自動化指令碼以expect eof結束就行了
linux 自動互動工具expect
簡介 expect是乙個自動化互動套件,主要應用於執行命令和程式時,系統以互動形式要求輸入指定字串,實現互動通訊。expect自動互動流程 spawn啟動指定程序 expect獲取指定關鍵字 send向指定程式傳送指定字元 執行完成退出.注意該指令碼能夠執行的前提是安裝了expect yum y i...
linux下expect工具使用筆記
1 expect工具介紹可參考此 自動互動的工具,使用的tcl tool command language 語言.常用的命令有spawn expect send wait等 expect手冊 manpage of expect 2 在ssh中的使用 在linux下要安裝該工具才能使用。下面的例子是乙...
Linux自動化命令工具expect
expect是unix系統中用來進行自動化控制和測試的軟體工具,應用在互動式軟體中如telnet,ftp,passwd,fsck,rlogin,tip,ssh等等。linux中我們經常寫指令碼處理一些繁瑣的任務,但不幸的是很多互動式的命令我們不得不人肉響應。expect可以代替我們實現與系統的互動。...