8

私は、いくつかのホストにrloginする必要があるexpectを使用してスクリプトを作成しています。その後、いくつかのコマンドを送信する必要があります。ここで、そのホストを終了し、別のホストに再度ログインして、いくつかのコマンドを送信したいと考えています。しかし、私のスクリプトの実行は、最初のホストがジョブを完了して終了するのを待っているのではなく、前のプロセスの間に他のコマンドを送信します。期待してガイドしてくださいを使用してこれを達成するにはどうすればよいですか?

サンプルコードは次のとおりです。

#!/usr/local/bin/expect -f

spawn rlogin host1
expect "%"
send "source xyz.csh\r"
send "exit\r"
expect "%"

spawn rlogin host2
some set of commands
4

4 に答える 4

1

command時間がかかる場合は、次の構成を試してください。

. . .
send "command\r"

expect {
    timeout {
        puts "Running..."
        exp_continue
    }
    "%PROMPT%" {
        puts "Finished."
    }
}

send "next command\r"
. . .

のコマンドでtimeout継続的に待機します。exp_continue%PROMPT%

于 2014-06-29T18:02:32.047 に答える
0

「前のプロセスの間に残りのコマンドを送信するスクリプト」について詳しく教えてください。

私はこれを試してみましたが、うまくいきました。

spawn ssh host1
expect ":"
send pwd1
expect "%"
send "echo hi\r"
expect "%"
send "exit\r"
expect eof
spawn ssh host2    
expect ":"
send pwd2
于 2013-07-11T09:13:30.557 に答える