LoginSignup
7

More than 5 years have passed since last update.

NetowrkManagerで特定のWiFiに繋がったタイミングで自動でコマンドを実行させる

Last updated at Posted at 2017-10-19

あるwifiに繋がったら自動でsshトンネルを掘ってほしかったので調べました。

/etc/NetworkManager/dispatcher.d/以下にシェルスクリプトを置いておくと、ネットワークの状態が変化したときに実行されるらしい。第一引数には変更があった対象のNIC名、第二引数は状態のメッセージが来るみたいです。第一引数だけつかって以下のようなものを書いて配置しました。

#!/bin/bash

if [ "$1" == wlan0 ] && iwconfig wlan0|grep HogeHogeAccessPoint; then
        if ! ps ax|grep "[s]sh -fND 8080"; then
                ssh -fND 8080 user@myserver.com -i /home/onokatio/.ssh/id_rsa -o "StrictHostKeyChecking no"
        fi
fi

変更があったNICがwlan0であること、さらに現在繋がっているAPがHogeHogeAccessPointであることを確認した上で、既にssh -fnDが実行されていないか確認し、動いていなかったらsshを実行します。

ちなみにgrepでsshが[s]shとなっているのは、自分自身(grep ssh)をps axの中から検出しないようにするためです。

最後にsudo chmod +xで実行属性を付けて完了。

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
7