Linux 工具Expect的安裝及使用方法

2021-10-14 23:39:38 字數 2069 閱讀 5894

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可以代替我們實現與系統的互動。...