monolithic kernel

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 を使うとかもよさそう。