0

リモート マシンに接続し、出力を期待してコマンド (priorietery) を実行するシナリオがあります。正確なパターンを確認しています。成功した場合は、実行された上記のコマンドによって作成されたファイルを開く必要があります。

指定されたディレクトリに移動してファイルを開き、同じファイルを解析する必要があります

#!/home/pub/bin/expect -f
spawn telnet 172.16.67.213 23 
expect "login name:"
send "administrator\r"
expect "password:"
send "Administrator1@\r"
expect "Windows NT Domain:"
send "\r"    
expect "C:\WINNT\Profiles\Administrator>"
send "\r"
expect "C:\WINNT\Profiles\Administrator>"
send "x -j Y -a run -d\r"
sleep 60
expect "ZZ"

****if {[string match *Z* $expect_out(buffer)]} {
        send "dir";} else {
    puts "Script failed";
    }****

ここで、スクリプトは文字列が一致するまで実行され、成功すると次のコマンド send "dir" は実行されません。

以下のようにロジックを置き換えると、echo ステートメントが取得されますが、成功しなかった場合に他のコマンドを実行したい場合は instaed になります。

**if {[string match *Z* $expect_out(buffer)]} {
        puts "Script passed";} else {
    puts "Script failed";
    }**

問題が明確であることを願っています。すべての方法を試していますが、成功しません..

よろしくお願いします、カメシュ。

4

1 に答える 1

0

dirを改行とともに送信すると、コマンドが起動されます。

send "dir\n"

コマンドが実行されるようになりましたが、その後の予期一致まで出力が表示されない場合があります (スクリプトによって stdout に出力されます)。すぐにフラッシュするには (スクリプトのデバッグなど)、次を使用しますset timeout 1; expect; expect *

于 2013-02-20T09:57:40.553 に答える