これは、次のBash スクリプトで使用しているコード スニペットです。
for user_input in `awk '{print}' testfile_$$.txt`
do
ipaddress=`echo $user_input | cut -d';' -f 1`
command="${config_mode}`echo $user_input | cut -d';' -f 2-`"
ping -w 1 $ipaddress 1> /dev/null 2> $ERR_LOG_FILE 1> $LOG_FILE
if [ $? -eq 0 ];then
ssh "$USERNAME@$ipaddress" "$command"
>> $LOG_FILE
fi
done
このスクリプトで Expect を使用して SSH ログインを自動化するにはどうすればよいですか?
私はExpectを初めて使用し、これをテストし始めました(失敗しました):
#!/usr/bin/bash
set force_conservative 0 ;# Set to 1 to force conservative mode even if
;# script wasn't run conservatively originally
if {$force_conservative} {
set send_slow {1 .1}
proc send {ignore arg} {
sleep .1
exp_send -s -- $arg
}
}
#
set timeout -1
spawn ssh auto21@10.38.227.229 {uname -a; df -h}
match_max 100000
expect "*?assword: "
send -- "bar01\r"
expect eof
Expect スクリプトで Bash スクリプトを最初から書き直す必要がありますか? それとも、Bash スクリプト内で Expect を使用できますか?
それができる場合:
さらに、Bash 変数の$command、$username、$password、および$ipaddressを取得して、Expect 部分で使用する必要があります。
どのような解決策を提案しますか?
または、Expect スクリプトを作成して、ログイン、エラー処理、実行、およびログファイルのためだけに Bash スクリプトから呼び出すことはできますか。