1. 程式人生 > 其它 >第 23 章 -《Linux 一學就會》- expect - 正則表示式-sed - cut 的使用

第 23 章 -《Linux 一學就會》- expect - 正則表示式-sed - cut 的使用

expect ([ɪkˈspekt] 期待 )是從它發展出來的。如果你想要寫一個能夠自動處理輸入輸出的指令碼

(如向用戶提問並且驗證密碼)又不想面對 C 或者 Perl,那麼 expect 是你的最好的選擇。它可以用來

做一些 linux 下無法做到互動的一些命令操作

23.1.1

安裝和使用 expect

[root@xuegod63 ~]# yum -y install expect

使用 expect 建立指令碼的方法

1)定義指令碼執行的 shell

#!/usr/bin/expect

這裡定義的是 expect 可執行檔案的連結路徑(或真實路徑),功能類似於

bash shell 功能

2set timeout 30

設定超時時間,單位是秒,如果設為 timeout -1 意為永不超時

3spawn

spawn 是進入 expect 環境後才能執行的內部命令,如果沒有裝 expect 或者直接在預設的 SHELL

下執行是找不到 spawn 命令的。不能直接在預設的 shell 環境中進行執行主要功能,它主要的功能是給

ssh 執行程序加個殼,用來傳遞互動指令。

4expect

這裡的 expect 同樣是 expect 的內部命令

主要功能:判斷輸出結果是否包含某項字串,沒有則立即返回,否則就等待一段時間後返回,等

待時間通過 timeout

進行設定

5send

執行互動動作,將互動要執行的動作進行輸入給互動指令

命令字串結尾要加上"\r",如果出現異常等待的狀態可以進行核查

6exp_continue

繼續執行接下來的互動操作

7interact

執行完後保持互動狀態,把控制權交給控制檯;如果不加這一項,互動完成會自動退出

8$argv

expect 指令碼可以接受從 bash 傳遞過來的引數,可以使用 [lindex $argv n]獲得,n 0 開始,

分別表示第一個,第二個,第三個……引數