expect自動應答的工具

2021-09-13 00:26:06 字數 1816 閱讀 9749

<< eof ###輸入重定向

這種適用於出現的問題個數已知

expect是建立在tcl基礎上的乙個工具,它用來自動化完成一些需要互動的任務。

系統中要先安裝expect 和 tcl

expect 的四個命令

直譯器為:/usr/bin/expect

例子:

#!/bin/bash

read -p "what's your name: " name

read -p "how old are you: " age

read -p "are you felling: " feel

echo $name is $age\'s old fell $feel

給該指令碼乙個執行許可權

chmod +x /mnt/information.sh
編寫expect指令碼

#!/usr/bin/expect     ##expect的直譯器

set name [ lindex $ar** 0 ] ###獲得指令碼的執行引數,其儲存在$ar**中,編號從0開始,並將其儲存到變數name中。

set age [ lindex $ar** 1 ]

set feel [ lindex $ar** 2 ]

set timeout 5 ##設定時間,如果5秒答不上來就結束跳出

spawn /mnt/information.sh ###spawn啟動指令碼和命令的會話

expect

"old"

"felling"

}expect eof ##互動結束

執行結果

自動登陸指令碼

執行指令碼後自動登陸172.25.254.60並保持登陸

#!/usr/bin/expect

spawn ssh [email protected] ##spawn後跟著要執行的動作

expect

"password"

}interact ###保留互動模式

執行結果展示

將expect整合到shell中。

例:批處理指令碼

檢測開啟的所有主機,並抓取所有主機的ip和主機的機名對應列表,並把列表儲存到file1t檔案中。

#!/bin/bash

auto_ssh(){ ##定義乙個函式

/usr/bin/expect

if [ "$?" -eq "0" ] ##如果上一條執行為真,則$?=1

then

auto_ssh $ip_id hostname | grep "password:" -a1 | tail -n 1 >> $1 ### 過濾含有password:的下一行 將最後一列輸出 將輸出的內容儲存到file1中

fidone

執行結果

expect自動應答

expect指令碼 1.expect簡介 expect是乙個用來處理互動的命令。借助expect,我們可以將互動過程寫在乙個指令碼上,使之自動化完成。expect 自動應答 基於tcl tool command language 語言演變而來 expect中最關鍵的四個命令是 send 用於向程序傳...

自動應答API memo

android關閉麥克風api public void setmicrophonemute boolean on sets the microphone mute on or off.parameters onset true to mute the microphone false to turn...

shell指令碼之expect自動應答語言

在指令碼中寫入與系統互動時可能出現的詢問語句,然後將要回答的答案也寫入指令碼中,實現自問自答,從而實現指令碼的人機互動。expect 是自動應答命令用於互動式命令的自動執行 spawn 是 expect 中的監控程式,其執行後會監控命令提出的互動問題 send傳送問題答案給互動命令 r 表示回車 e...