シェルからExpectを作成する方法

シェルからExpectを作成する方法

これは前の質問の連続です。ビルドコマンドが見つかりません

前の記事を参照してからこのコマンドを作成しましたが、これが間違っている場合は、リモートサーバーでSSHを実行していくつかのコマンドを実行できますか?

ベストアンサー1

1つの可能性は次のとおりです。 Expect構文ファイルを作成し、シェルスクリプトを介して呼び出します。

 #!/bin/bash
 expect -f my-file.exp $1 # parameter 1 is the server name

my-file.expにはExpectコマンドのみがあります。

spawn ssh "username@[lindex $argv 0]"  # param 1 : server name
                                # expect now reads the input and does what you tell it on certain patterns

expect { 
  "password:" { send "my-password\r"; send "do_this_command\r"; send "do_that_command\r"; exp_continue; }
  "done" { send_user "exiting"; }
}

この例では、プレーンテキストパスワードを送信するサーバーにログインし、いくつかのコマンドを送信して続行します。

入力から「完了」と読み出されると終了し、そうでなければ数秒後にタイムアウトします。

"exp_continue" が実行されている限り、Expect{} ループ内にとどまり、入力を一致させ、適切な出力を実行します。

おすすめ記事