web-dev-qa-db-ja.com

接続が切断された後にNetwork Managerを再起動しますか?

Ubuntu 11.10(Unity 3D)とルーターまたはモデムなしのケーブル(DSL)インターネット接続を使用します。

Iインターネット接続を切断する場合、ネットワークマネージャーアイコンをクリックしてから接続を選択するだけで再接続できます接続が表示されるため、ドロップダウンメニュー。ネットワークマネージャーを再起動する必要はありません。

しかし、インターネット接続が切断されるたびに自体になると、端末を開いてSudo service network-manager restartを使用します。ネットワークマネージャーのドロップダウンメニューに接続が表示されます。コマンドの後でのみ、ネットワークマネージャーは起動して自動的に接続します。

接続が切断されるたびにネットワークマネージャーを再起動する必要がないように設定されていますか(再起動が不要な場合に接続を切断するのではなく)?

つまり、ISPへの接続が切断されたかどうかに関係なく、コンピューターを使用している限り、ネットワークマネージャーを停止させたくないと思います。

端末を開いてコマンドとパスワードを入力するのはそれほど大したことではありませんが、ネットワークマネージャーが停止しないようにする方法があれば、それはより良いでしょう。

2012年1月26日付の編集:syslogからの行

Jan 25 20:09:36 aes-Inspiron-1545 pppd[3539]: No response to 3 echo-requests
Jan 25 20:09:36 aes-Inspiron-1545 pppd[3539]: Serial link appears to be disconnected.
Jan 25 20:09:36 aes-Inspiron-1545 pppd[3539]: Connect time 241.5 minutes.
Jan 25 20:09:36 aes-Inspiron-1545 pppd[3539]: Sent 3575961 bytes, received 79026206 bytes.
Jan 25 20:09:36 aes-Inspiron-1545 pppd[3539]: Connection terminated.
Jan 25 20:09:36 aes-Inspiron-1545 avahi-daemon[836]: Withdrawing workstation service for ppp0.
Jan 25 20:09:36 aes-Inspiron-1545 NetworkManager[3531]: <info> (eth0): device state change: activated -> failed (reason 'ppp-disconnect') [100 120 13]
Jan 25 20:09:36 aes-Inspiron-1545 NetworkManager[3531]: <warn> Activation (eth0) failed.
Jan 25 20:09:36 aes-Inspiron-1545 NetworkManager[3531]:    SCPlugin-Ifupdown: devices removed (path: /sys/devices/virtual/net/ppp0, iface: ppp0)
Jan 25 20:09:36 aes-Inspiron-1545 NetworkManager[3531]: <info> (eth0): now unmanaged
Jan 25 20:09:36 aes-Inspiron-1545 NetworkManager[3531]: <info> (eth0): device state change: failed -> unmanaged (reason 'removed') [120 10 36]
Jan 25 20:09:36 aes-Inspiron-1545 NetworkManager[3531]: <info> (eth0): deactivating device (reason 'removed') [36]
Jan 25 20:09:36 aes-Inspiron-1545 dbus[802]: [system] Activating service name='org.freedesktop.nm_dispatcher' (using servicehelper)
Jan 25 20:09:36 aes-Inspiron-1545 NetworkManager[3531]: <warn> could not read ppp stats: No such device
Jan 25 20:09:36 aes-Inspiron-1545 NetworkManager[3531]: <info> (eth0): cleaning up...
Jan 25 20:09:36 aes-Inspiron-1545 NetworkManager[3531]: <info> (eth0): taking down device.
Jan 25 20:09:36 aes-Inspiron-1545 kernel: [18027.155552] sky2 0000:09:00.0: eth0: disabling interface
Jan 25 20:09:36 aes-Inspiron-1545 avahi-daemon[836]: Interface eth0.IPv6 no longer relevant for mDNS.
Jan 25 20:09:36 aes-Inspiron-1545 avahi-daemon[836]: Leaving mDNS multicast group on interface eth0.IPv6 with address fec0::b:223:aeff:fe2d:2431.
Jan 25 20:09:36 aes-Inspiron-1545 avahi-daemon[836]: Withdrawing address record for 2002:1b00:3b4f:b:223:aeff:fe2d:2431 on eth0.
Jan 25 20:09:36 aes-Inspiron-1545 avahi-daemon[836]: Withdrawing address record for 2002:1b00:3754:b:223:aeff:fe2d:2431 on eth0.
Jan 25 20:09:36 aes-Inspiron-1545 avahi-daemon[836]: Withdrawing address record for 2002:7345:f137:b:223:aeff:fe2d:2431 on eth0.
Jan 25 20:09:36 aes-Inspiron-1545 avahi-daemon[836]: Withdrawing address record for fec0::b:223:aeff:fe2d:2431 on eth0.
Jan 25 20:09:36 aes-Inspiron-1545 NetworkManager[3531]: <info> Unmanaged Device found; state CONNECTED forced. (see http://bugs.launchpad.net/bugs/191889)
Jan 25 20:09:36 aes-Inspiron-1545 NetworkManager[3531]: <info> Unmanaged Device found; state CONNECTED forced. (see http://bugs.launchpad.net/bugs/191889)
Jan 25 20:09:36 aes-Inspiron-1545 pppd[3539]: Terminating on signal 15
Jan 25 20:09:36 aes-Inspiron-1545 pppd[3539]: Exit.
Jan 25 20:09:36 aes-Inspiron-1545 dbus[802]: [system] Successfully activated service 'org.freedesktop.nm_dispatcher'
Jan 25 20:11:56 aes-Inspiron-1545 modem-manager[3529]: <info>  Caught signal 15, shutting down...
Jan 25 20:11:56 aes-Inspiron-1545 NetworkManager[3531]: <info> caught signal 15, shutting down normally.
Jan 25 20:11:56 aes-Inspiron-1545 NetworkManager[3531]: <warn> quit request received, terminating...
Jan 25 20:11:56 aes-Inspiron-1545 NetworkManager[3531]: <info> (eth1): now unmanaged
Jan 25 20:11:56 aes-Inspiron-1545 NetworkManager[3531]: <info> (eth1): device state change: unavailable -> unmanaged (reason 'removed') [20 10 36]
Jan 25 20:11:56 aes-Inspiron-1545 NetworkManager[3531]: <info> Unmanaged Device found; state CONNECTED forced. (see http://bugs.launchpad.net/bugs/191889)
Jan 25 20:11:56 aes-Inspiron-1545 NetworkManager[3531]: <info> exiting (success)
Jan 25 20:11:56 aes-Inspiron-1545 modem-manager[6945]: <info>  ModemManager (version 0.5) starting...
Jan 25 20:11:56 aes-Inspiron-1545 NetworkManager[6947]: <info> NetworkManager (version 0.9.1.90) is starting...
Jan 25 20:11:56 aes-Inspiron-1545 NetworkManager[6947]: <info> Read config file /etc/NetworkManager/NetworkManager.conf
Jan 25 20:11:56 aes-Inspiron-1545 kernel: [18167.470749] init: reconnect main process (6948) terminated with status 2
Jan 25 20:11:56 aes-Inspiron-1545 modem-manager[6945]: <info>  Loaded plugin Nokia
Jan 25 20:11:56 aes-Inspiron-1545 modem-manager[6945]: <info>  Loaded plugin Ericsson MBM
Jan 25 20:11:56 aes-Inspiron-1545 modem-manager[6945]: <info>  Loaded plugin MotoC

enter image description here

17
user25656

/etc/init/reconnect.confに配置できるUpstartスクリプトは次のとおりです。

start on started network-manager
stop on runlevel [016]

script
  while true; do
    if ifconfig eth0 | grep -q "inet addr:"; then
       # echo "all ok!"
    else
       restart network-manager
    fi
    sleep 5
  done
end script

Eth0のIPアドレスが失われると(インターフェースが異なる場合はインターフェースに設定します)、ネットワークマネージャージョブを再起動し、接続を復元します。

16
Tuminoid

Network-managerの代わりにwicdを試してください。同様の場合に推奨されます: https://bbs.archlinux.org/viewtopic.php?id=12444

問題が解決するかどうか、またwicdがpppoeをサポートするかどうかはわかりません。

  1. 次の場合に備えて、.debファイルをバックアップします。

    Sudo apt-get download network-manager network-manager-gnome
    
  2. ネットワークマネージャーを削除し、wicdをインストールする

    Sudo apt-get purge network-manager network-manager-gnome
    Sudo apt-get install wicd wicd-gtk
    
  3. リブート。 wicdを使用して接続してみてください。

何か問題が発生した場合は、wicdを削除してネットワークマネージャーを再インストールします。

Sudo apt-get purge wicd wicd-gtk
Sudo dpkg -i network-manager*.deb
2
Savvas Radevic

迅速で汚い回避策は、ping -i 5 google.com || service network-manager restartをルートとして実行するスクリプトを書くことです(そのために/etc/init.d/-daemonを書くことができますが、解決策は非常に汚いので、私はそれをしません) )

このスクリプトは、Googleが見つからないたびにネットワークマネージャーを再起動し、5秒ごとにチェックします。

2
sakjur

なぜこの質問に答えているのですか?

Therは非常に良い答えですが、すべてはinitまたはupstartを使用して記述されています。これからsystemdを使用するので、より良いスクリプトと情報を書いています。その方法について。

しかし、方法はありますか?

方法があります。ネットワークの状態を監視し、必要に応じてNetwork Managerを再起動するスクリプトを作成するだけです。このスクリプトとシステムで開始されるsystemdサービスを構築し、5秒ごとにネットワークステータスを監視して、オンラインかどうかを確認します。

どうすればいいですか?

まず、接続テストの1つとなるfpingツールをインストールする必要があります(接続が可能な場合、fpingは「生きている」、そうでない場合は「アドレスが見つかりません」を返します)。

$ Sudo apt-get install fping -y

次に、システム上に監視スクリプトを作成します。 nm-watcherというファイルを/ usr/local/bin /に作成します。

$ Sudo touch /usr/local/bin/nm-watcher

Nanoまたはお好みのテキストエディターを使用して編集します。

$ Sudo nano /usr/local/bin/nm-watcher

このスクリプトをエディター内にコピーして貼り付け、ファイルを保存して閉じます(このチュートリアルのようにnanoを使用している場合は、「CTRL + X」、「Y」、「ENTER」を順番に使用します)。 wm0をwm-watcherに監視させたいインターフェースに変更することを忘れないでください:

#!/bin/bash

while true; do #create a infinite loop to keep looking at your connection
        NET=$(ifconfig wlan0 | grep "inet inet addr:") # verify if the interface has an assigned IP
        ROUTE=$(fping google.com 2>&1 | grep "alive") # try to ping google.com and verify if we have any response
        WEB=$(wget --tries=10 --timeout=20 --spider http://google.com 2>&1 | grep "OK") # spiders google.com to verify if the page exists. returns error if a connections is not possible

        if [ ! "$NET" != "" ] || [ ! "$ROUTE" != "" ] || [ ! "$WEB" != "" ]; then # verify if any of the above conditions aren't OK
                service network-manager restart
        fi

        sleep 5
done

このスクリプトを実行するには、実行可能にする必要があります。

$ Sudo chmod 755 /usr/local/bin/nm-watcher

次に、SystemDサービスを作成します。このため、/ etc/systemd/system /にあるnm-watcher.serviceファイルを作成および編集する必要があります。

$ Sudo touch /etc/systemd/system/nm-watcher.service && Sudo nano /etc/systemd/system/nm-watcher.service

そして、このコンテンツをファイル内に配置します。

[Unit]
Description=NetworkManager Watcher
Wants=NetworkManager.service
Before=NetworkManager.service

[Service]
ExecStart=/usr/local/bin/nm-watcher

[Install]
WantedBy=multi-user.target

これにより、network-manager.serviceを使用して接続を確立した後、ブートごとに以前作成したスクリプトをSystemDが呼び出すサービスファイルが作成されます。

次を使用してこのサービスを実行できるようにする必要があります。

$ Sudo systemctl enable nm-watcher.service

次のように入力してサービスを開始します。

$ Sudo service nm-watcher start

サービスが実行されているかどうかを確認するには、次のように入力します。

$ Sudo service nm-watcher status

サービスに問題がある場合は、次を使用してデバッグメッセージを表示できます。

$ Sudo journalctl -u nm-watcher

他に何かすべきでしょうか?

いいえ、これがこのタスクを達成するために必要なすべてです。このスクリプトは、次のスクリーンショットでわかるように、システムパフォーマンスへの影響が非常に小さくなっています。

nm-watcher footprint

0
Alexandre Teles

私の古いラップトップでは、大量の負荷がかかると(たとえば、大きなファイルをダウンロードするなど)、WiFiから切断する傾向がある不良のWiFiカードがありました。

インターネットがまだ接続されているかどうかを確認する簡単なスクリプトを作成し、接続されていない場合は、ネットワークマネージャーを再起動します。

#!/bin/bash

ping -c 1 8.8.8.8
received=$?
echo $received
if [[ $received -ne 0 ]] ; then
    service network-manager restart
fi

ルートcronjobをSudo crontab -eで作成し、毎分(より頻繁に行うことはできませんが、スクリプトは単純なpingであるため、リソースを消費しません)スクリプトを実行します。

だから、何らかの理由で私のWiFiが消えたとしても、一度に1分程度しか出ないでしょう。 cronに慣れていない場合は、 this を読むことをお勧めします

0
garzai

この問題のスクリプトを作成しました。

#!/bin/bash

for(( ; ; ))
do
VALUE=$(ifconfig | grep ppp0| awk '{print $1}')
        if [ "$VALUE" != "ppp0" ]; then
                {       eval restart network-manager
                        eval sleep 5
                }
        fi
done

これは正常に機能していますが、このスクリプトはCPUを大量に使用しています。 CPU使用率を下げるのに役立つものはありますか?

0
Jyoti Prakash