前言:
寫了乙個自動互動指令碼中用到了expect自動互動工具。目的是自動登陸到伺服器,並執行預先寫好的shell指令碼。
**如下:
#!/usr/bin/expect
settimeout -1
set script "/weblogic/sj/viewusage.sh"
set host 100.12.128.1
set username weblogic
set password [
exec
dc -e 42270635435205155082p ]
spawn ssh
$username@
$host
expect
"*assword:"
}expect
"]*"
send "$script\r"
expect
"]*"
send "exit\r"
send "\r"
問題描述:
執行後偶爾會出現指令碼script未成功執行的情況。
問題原因:
指令碼結尾處未加expect eof
問題分析:expect 的核心功能,對於設定好的特定匹配形式,以相匹配的動作以應對。每乙個expect後所跟的字串(或者正規表示式)就是指令碼所等待的匹配模式,每乙個send 所做的工作就是對於各種的模式串,實施相應的動作。
解決方法:
結束expect要加上expect eof
最後是等待標示子程序已結束的標示符eof,然後退出。(注:這個等待eof必須要有,如果沒有eof,很可能在子程序沒有結束前就退出,造成問題。)
expect 自動互動指令碼
命令列引數 ar 引數陣列,使用 lindex ar n 獲取,ar 0為指令碼名字 argc,引數個數 set username lindex ar 1 獲取第1個引數 set passwd lindex ar 2 獲取第2個引數 set timeout 30 設定超時 spawn是expect內...
使用expect實現自動互動,自動登入指令碼
使用expect實現自動互動,自動登入指令碼 指令碼 如下 usr bin expect set timeout 30 spawn ssh l username 192.168.1.1 expect password send ispass r interact 1.usr bin expect 這...
自動互動式指令碼 expect簡介
我們經常會遇到一些需要與伺服器程式打交道的場景,比如,從登陸某個伺服器,然後進行某項工作。這很平常,但是如果把這個工作自動化進行,你就需要乙個程式能自動做你要告訴機器的事情,這樣,我們的expect就能大顯身手了。首先,expect是乙個簡單的工具語言,如要工作就是進行自動化的人機互動。它的作者對e...