YAMAHA のルーターの SSH での遠隔操作を expect コマンドで自動化する
SSH でルーターにログインして Wake On LAN のマジックパケットを送信するのに、一度管理者に昇格してから wol send
コマンドを実行する必要があって、対話型の UI なのがつらかったのだが、expect
コマンドで割と簡単に自動化できた。
addr=00:00:00:00:00:00
password=$(op item get --fields=password ...)
host=.netvolante.jp
port=20022
expect -f - <<EOS
set timeout 10
spawn ssh -p "$port" "$host"
expect "> "
send "administrator\n"
expect "Password: "
send "$password\n"
expect "# "
send "wol send lan1 $addr\n"
expect "# "
send "exit\n"
expect "> "
send "exit\n"
EOS
動作確認は NVR510 で行った。
パスワードは 1Password で管理しているので、1Password CLI で取ってくるようにした。macOS の Keychain を使うとかもよさそう。