web-dev-qa-db-ja.com

インターネットの再接続時にカスタムスクリプトを実行する方法

私のインターネットは時々切断されます。インターネットが再接続するたびにBashスクリプトを実行したいと思います。

スクリプトは非常に簡単です。

#!/bin/bash
mplayer /home/user/sound.mp3

/usr/binに配置され、ターミナルでonline_notifierとして呼び出すと完全に機能します。

インターネットが再接続するたびにこのスクリプトを実行したいと思います。 /etc/network/interfaces/ファイルに次の行を追加してみました。

post-up sound_notifier

これは、そのファイルの完全なコンテンツです。

auto lo
iface lo inet loopback
post-up sound_notifier

私もフルパスで試しました。しかし、うまくいきませんでした。 ifconfig output がこれに役立ちます。

どうすればこれを達成できますか?

3
Joseph John

これは非常にシンプルなbashスクリプトです。 chmod +xで実行可能にし、カスタム起動アプリケーションとして追加して、ログインごとにこれを継続的に実行します。 aplayについて述べたので、これはGUIだけでなくコマンドラインでも機能するはずです。私の現在のラップトップは音が出ないので、すべてをnotify-sendでテストする必要がありました。必要に応じてスクリプトを自由に調整してください。

#!/bin/bash
# set -x

while [ 1 ]; do
  STATUS_CURRENT=$(nmcli -t -f STATE nm status)
  if [[ $STATUS_CURRENT == "connected"  &&  $STATUS_LAST != "connected" ]]; then
        # replace this with aplay sound
        notify-send "We've connected"

# Elif [[ $STATUS_CURRENT == "disconnected"  &&  $STATUS_LAST == "connected"  ]];then
#       notify-send "Disconnected now"
  fi

   STATUS_LAST="$STATUS_CURRENT"
   sleep 2
done
1

スクリプトの名前がsound_notifierであり、/usr/binに配置されているとします:

Sudo chmod +x /usr/bin/sound_notifier

スクリプトを作成する/etc/network/if-up.d/start_sound_notifier

Sudo nano /etc/network/if-up.d/start_sound_notifier

以下のコードを追加します

#!/bin/sh
if [ "$METHOD" = loopback ]; then
    exit 0
fi

# Only run from ifup.
# if [ "$MODE" != start ]; then
#    exit 0
# fi

sound_notifier

スクリプトを実行可能にします。

Sudo chmod +x /etc/network/if-up.d/start_sound_notifier

それで全部です

;)

0
A.B.