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


18

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

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

しかし、インターネット接続が自然にドロップするたび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

ここに画像の説明を入力してください



これら二つの解決策を試してください:(1)forums.fedoraforum.org/showthread.php?t=229718#2(2)platonic.techfiz.info/2009/07/28/... -残念ながら、私が持っていないモバイルブロードバンドそれらを試すための接続。
サヴァスラデビッチ

@medigeek、モバイル接続がない場合でも。これはDSL(有線)接続です。電話タイプのソケットに差し込むケーブルです。私の側には介在するルーターやモデムはありません。

@ vasa1はDSL接続を切断し、ターミナルでこのコマンドを発行します。nmcli con up id "DSL connection 1"。私はDSLを持っていないので、すべてのコマンドと出力に関してあなたの助けが必要です。出力をコメントアウトします。
ラーフルヴィルパラ

出力を与える:nmcli -t -f TYPE,STATE dev
ラーフルVirpara

回答:


16

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

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アドレスが失われると(インターフェイスが異なる場合は構成します)、ネットワークマネージャージョブを再起動し、接続を復元します。


これは私にとって初めてのことなので、手に持っていただければ幸いです。reconnect.confという名前のテキストファイルを作成し、「root」権限で/ etc / initに配置しますか?単語ごとにテキスト単語を使用しますか?「アクティブなネットワーク接続」に「インターフェース:イーサネット(eth0)」と表示されます。私の接続名は「vasa1」です。「inet addr:」のままにするか、値を入力する必要がありますか?Ubuntuは、このファイルを読み取る必要があることを知っていますか?それとも、何かしなければなりませんか?

1
先ほど言ったように、rootでreconnect.confto というファイルを作成します/etc/init。変更する必要があるのは、正しくない場合にeth0を別のものに変更することだけです。inet addr:partはgrepの単なるフィルターであり、触れないでください。関連する接続名はで確認できますifconfig。Upstartはこのファイルを自動的に読み取るsudo start reconnectため、ジョブを実行するために実行する必要があります。次回の再起動時に、自動的に起動します。
ツミノイド

の最初の行はでifconfig始まるethoので、それを使用してsudo start reconnect、接続が切断されたときに使用します。結果を投稿します。ありがとう!

作成/etc/init/reconnect.confして再起動しました。再起動後に接続が切断されたときに、nmが再起動しませんでした。だから私は発行したsudo start reconnectreconnect stop/waiting応答でしたが、nmは再起動しませんでした。私はsudo service network-manager restart通常、私がしていることをしなければなりませんでした。の代わりにrestart network-manager、何かrestart service network-managerが必要ですか?(ところで、

私のシステムでは、network-managerはnmのアップスタートジョブであり、上記のコマンドは正常に動作しますが、システムで動作するものに再起動コマンドを変更してくださいservice network-manager restart。好奇心が強い、status network-managerあなたのシステムの出力は何ですか?それは言うならばstop/waiting、再起動後(またはエラーを与える)、あなたのようなものへのスタートを変更する必要があるstart on runlevel [2345]と追加しsleep 60ながら、前に。
ツミノイド

2

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

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


これまでにスクリプトを書いたことがないため、解決策が理解できなくても、これに賛成票を投じました。段階的な詳細を教えてください。

私は読書をしていますが、繰り返しサイトにpingしてもいいかどうか知りたいです。pingは主にトラブルシューティングに使用されるという印象を受けます。

1
おそらくそうではないので、それが汚れている理由の1つです;)Tuminoidsソリューションを少し使ってみてください。DNSサーバーが面倒な場合は動作しませんが、ほとんどの場合は動作するはずです。
サクジュル

私はかなり初心者で、あなたの答えに
汚れたものがありました。– kernel_panic

1
基本的に、5秒ごとにGoogleにリクエストを送信し、Googleに到達できない場合はネットワークマネージャーを再起動することで機能します。それはそれを行うのに良い方法ではないので汚いです、それを行うのに効果的な方法ではなく、あなたはどこかでシステム管理者にあなたのIPアドレスをブロックさせるかもしれません;)(Googleはそれをしないと思いますが、そうではありませんとにかく良い)座って、まだ生きているかどうかを確認するために人をつつくと考えてください;)
sakjur

2

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

問題が解決するかどうか、また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

どうもありがとう、medigeek!3つのポイント。1つは、archlinuxの場合、OPはwicdへの変更が問題を解決したかどうかを投稿するために戻ってきていません。第二に、これは不便ですが、デフォルトから変更するのをためらっています。今のところ、alias nm='echo "password" | sudo -S service network-manager restart'回避策としてこのエイリアスを使用しています。第三に、他の役立つリンクから、この問題はUbuntuとは関係なく「上流」にあるように見えるため、この質問を閉じる必要があるかどうかを尋ねます。

1
最初の点については、widd FAQページには、wicdバージョン2.0までpppoeをサポートしないと書かれているので、おそらく答えを削除する必要があります。ポイント#3については、バグを直接アップストリームで試すことができます(pppdまたはnetwork-manager?)
Savvas Radevic

あなたが提供したランチパッドのバグに自分を追加しました。

0

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

#!/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

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

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

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

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

私は何をすべきか?

まず、fpingツールをインストールして、接続テストの1つを作成する必要があります(接続が可能であればfpingは "is alive"を返し、可能でなければ "address not found"を返します)。

$ 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フットプリント


0

私の古いラップトップでは、大量の負荷(たとえば、大きなファイルのダウンロードなど)があると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、これを読むことをお勧めします

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.