monolithic kernel

YAMAHA のルーターの SSH での遠隔操作を expect コマンドで自動化する

April 21, 2023

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