ブログ

Armadillo-IoT G3/G3L: ネットワークコネクションの状態変更時にスクリプトを動作させる方法

at_ito
2018年10月29日 17時47分

Armadillo-IoT G3/G3Lをご使用の際にネットワークの状態が変化した時に何かしらの処理をしたい場合があるかと思います。その際にはNetworkManagerの仕組みを利用して、ネットワークの状態が変化した際に、スクリプトを起動することができます。

ここではネットワークの状態が変化した際にスクリプトを動作させる方法を紹介します。

ネットワークの状態が変化した際にスクリプトを起動させる

NetworkManagerはネットワークの状態が変化した際に、/etc/NetworkManager/dispatcher.dディレクトリの配下にあるスクリプトを実行します。 そのため、実行させたい処理を記述したスクリプトを/etc/Networkmanager/dispatcher.dディレクトリに配置することで、ネットワークの状態を変化した場合に意図した動作をさせることが可能です。

スクリプトは第1引数にインターフェースの名前を、第2引数にアクションを設定された状態で起動します。

例として、Armadillo-IoT G3で、G3/LTEがupした場合にled3を点灯し、eth0がdownした場合にled3を消灯するスクリプトを以下に紹介します。

  • ファイル名: /etc/NetworkManager/dispatcher.d/98updownLED
#!/bin/bash
 
update_g3_led() {
        case "$1" in
        ppp0|ttyUSB2)
                LED_SYSFS=/sys/class/leds/led3
                case "$2" in
                up|vpn-up)
                        echo 1 > ${LED_SYSFS}/brightness
                        ;;
                down|vpn-down)
                        echo 0 > ${LED_SYSFS}/brightness
                        ;;
                esac
                ;;
        esac
}
 
update_g3_led $1 $2

  • ※: 3G/LTEの場合はupの時にインターフェース名ppp0となり、downの時にインターフェース名ttyUSB2となります。
  • ※: 実行する際にはスクリプトに実行権限を付ける必要があります。
  • Armadillo-IoT G3Lの場合は、デフォルトで/etc/NetworkManager/dispatcher.d/99updownLEDも使用されていますので、参考にしてみてください。