これは前の質問の連続です。ビルドコマンドが見つかりません
前の記事を参照してからこのコマンドを作成しましたが、これが間違っている場合は、リモートサーバーで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{} ループ内にとどまり、入力を一致させ、適切な出力を実行します。
答え2
シェルスクリプトで Expect Shebang を使用して Expect スクリプトを作成することもできます。
#!/usr/bin/expect -f
spawn ssh localhost
expect "password: "
send "password\r"
expect "{[#>$]}" #expect several prompts, like #,$ and >
send -- "command.sh\r"
expect "result of command"
etc...