YAMAHA のルーターの SSH での遠隔操作を expect コマンドで自動化する
SSH でルーターにログインして Wake On LAN のマジックパケットを送信するのに、一度管理者に昇格してから wol send
コマンドを実行する必要があって、対話型の UI なのがつらかったのだが、expect
コマンドで割と簡単に自動化できた。
addr=00:00:00:00:00:00password=$(op item get --fields=password ...)host=.netvolante.jpport=20022
expect -f - <<EOSset timeout 10spawn 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 を使うとかもよさそう。