sshで接続する場合、expectを使う。
#!/bin/sh
hosts=`cat TEST.list`
user=************
pass=****************
for host in $hosts
do
./test.exp $user $pass $host
done
ここで「TEST.list」は接続先の機器の一覧で一行に一つ記述する。
test.expはこんな感じ。
#!/usr/bin/expect
log_file expect.log
set User [lindex $argv 0]
set PW [lindex $argv 1]
set RemoteHost [lindex $argv 2]
set Prompt "\[#$%>\]"
set timeout 5
spawn ssh -l ${User} ${RemoteHost}
expect {
-glob "(yes/no)?" {
send "yes\n"
exp_continue
}
-glob "User AuthenticationPassword:" {
send "${PW}\n"
}
}
expect {
-glob "${Prompt}" {
send "<コマンド>\n"
}
}
expect {
-glob "${Prompt}" {
send "quit\n"
}
}