第 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 可執行檔案的連結路徑(或真實路徑),功能類似於
2)set timeout 30
設定超時時間,單位是秒,如果設為 timeout -1 意為永不超時
3)spawn
spawn 是進入 expect 環境後才能執行的內部命令,如果沒有裝 expect 或者直接在預設的 SHELL
下執行是找不到 spawn 命令的。不能直接在預設的 shell 環境中進行執行主要功能,它主要的功能是給
ssh 執行程序加個殼,用來傳遞互動指令。
4)expect
這裡的 expect 同樣是 expect 的內部命令
主要功能:判斷輸出結果是否包含某項字串,沒有則立即返回,否則就等待一段時間後返回,等
待時間通過 timeout
5)send
執行互動動作,將互動要執行的動作進行輸入給互動指令
命令字串結尾要加上"\r",如果出現異常等待的狀態可以進行核查
6)exp_continue
繼續執行接下來的互動操作
7)interact
執行完後保持互動狀態,把控制權交給控制檯;如果不加這一項,互動完成會自動退出
8)$argv
expect 指令碼可以接受從 bash 傳遞過來的引數,可以使用 [lindex $argv n]獲得,n 從 0 開始,
分別表示第一個,第二個,第三個……引數