一 expect介紹
expect 是乙個免費的程式設計工具,用來實現自動的互動式任務,而無需人為干預。說白了, expect二 expect基礎就是一套用來實現自動互動功能的軟體。需要安裝
yum install -y expect
在使用 expect 時,基本上都是和以下四個命令打交道:
| 命令 | 作用 |
| ---- | ---- | ---- |
| spawn| 啟動新的程序 |
| expec | 從程序接受字串 |
| send | 用於向程序傳送字串 |
|interact| 允許使用者互動|
spawn 命令用來啟動新的程序, spawn 後的 expect 和 send 命令都是和使用 spawn 啟動的新程序進行互動
expect 通常用來等待乙個程序的反饋,我們根據程序的反饋,再使用 send 命令傳送對應的互動命令。
send 命令接收乙個字串引數,並將該引數傳送到程序。
三 總結expect自動應答的基本步驟
第一步: 執行乙個程式或命令=> spawn 命令資訊
第二步: 識別產生資訊關鍵字=> expect 捕獲關鍵字
第三步: 根據識別關鍵做處理=> send 應答資訊
四 例項
自動應答指令碼
#!/usr/bin/expect
spawn ssh [email protected] uptime
expect "yes/no"
send "yes\n"
expect "*assword"
send "1\n"
expect eof
解釋
1、#!/usr/bin/expect -f:使用expect來解釋該指令碼
2、spwan: spawn是進入expect環境後才可以執行的expect內部命令,如果沒有裝expect或者直接在預設的shell下 執行是找不到spawn命令的。它主要的功能是給ssh執行程序加個殼,用來傳遞互動指令;
3、expect: expect "*assword":這裡的expect也是expect的乙個內部命令,這個命令的意思是判斷上次輸出結果 裡是否包含「password」的字串,如果有則立即返回;否則就等待一段時間後返回,這裡等待時長就是前面 設定的30秒;
4、send: send "1\n":當匹配到對應的輸出結果時,就傳送密碼到開啟的ssh程序,執行互動動作;
expect程式設計
expect是unix系統中用來進行自動化控制和測試的軟體工具,由don libes製作,作為tcl指令碼語言的乙個擴充套件,應用在互動式軟體中如telnet,ftp,passwd,fsck,rlogin,tip,ssh等等。該工具利用unix偽終端包裝其子程序,允許任意程式通過終端接入進行自動化控...
七 shell程式設計 expect
1.expect 前言觀察ssh登入的互動現象,有些程式難以避免的需要互動。如何解決指令碼與程式的互動問題。expert就是專門解決指令碼和程式之間的互動問題 語法 spawn expect的內部命令,啟動乙個shell程式 expect 期望哪些內容 yes no 就send傳送yes。r表示回車...
SHell程式設計之Expect免互動
1 expect是建立在tcl基礎上的乙個工具,expect是用來進行自動化控制和測試的工具。主要解決shell指令碼中不可互動的問題。對於大規模的linux運維很有幫助。2 在linux運維和開發中,我們經常需要遠端登入伺服器進行操作,登入的過程是乙個互動到的過程,可能會需要輸入yes no pa...