expect 程式設計

2022-03-15 12:43:06 字數 1528 閱讀 2695

一 expect介紹

expect 是乙個免費的程式設計工具,用來實現自動的互動式任務,而無需人為干預。說白了, expect

就是一套用來實現自動互動功能的軟體。需要安裝

yum install -y expect

二 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...