LoginSignup
0
0

More than 5 years have passed since last update.

AirStationの定期再起動をmacOSで自動化する

Posted at

つくったもの

yewton/reboot-airstation

背景

なんだか無線の調子が悪くてプチプチ切れるようになったので AirStation ルーターを再起動してみたら症状が収まったので、自動で定期的に再起動してほしくなった。

使ったもの

AppleScript

前提として、 AirStation には Web API のような便利なものは備わっていないため、再起動させるにはブラウザから管理画面に入って操作するしかない。

この操作を curl でエミュレートするなども考えたが、今回は常に稼働しているmacOSから出来ればそれでよかったので、一番かんたんに出来そうなAppleScriptを使うことにした。

launchd

AppleScriptで自動再起動できるようになったので、これを定期的に実行するためにlaunchdを使った。

ハマったところ

ページロードを待ちたい

ブラウザを自動で操作するだけなので、ページのロードが完了していないと意図通りに動作しない。

applescript wait for page to load で検索すると 色々やり方はあるようだったが、デファクトなやり方がなさそうだったのと、今回は厳密さをそこまで要求しないので、単に delay を各所に挟むだけにした。

アカウント情報を外から与えたい

アカウント情報をスクリプトにハードコードしたくなかったので、環境変数から与えることにした。

AppleScript では system attribute "HOGE" で環境変数を取得できる。

LaunchAgentで環境変数を与えるには、EnvironmentVariables を使って以下のように指定する:

    <key>EnvironmentVariables</key>
    <dict>
        <key>HOGE</key>
        <string>hoge</string>
    </dict>

LaunchAgent は ~$HOME を展開できない

bash を噛ますなどの回避方法もある のだけれど、今回はこの他にアカウント情報なども埋め込む必要があったので、 plist のテンプレートを元に環境変数の値を埋め込んだファイルを生成して配置するスクリプトを作った。
この配置スクリプトを実行した環境の $HOME の値を埋め込んでフルパスに直したものを使用することで回避した。

参考にしたもの

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0