web-dev-qa-db-fra.com

Faire redémarrer Network Manager après une connexion interrompue?

Utiliser Ubuntu 11.10 (Unity 3D) et une connexion Internet par câble (DSL) sans routeur ni modem.

Si I déconnectez ma connexion Internet, je peux simplement me reconnecter en cliquant sur l'icône du gestionnaire de réseau et en sélectionnant une connexion. le menu déroulant puisque mes connexions sont visibles. Il n'est pas nécessaire de redémarrer le gestionnaire de réseau.

Mais chaque fois que la connexion Internet tombe par elle-même , j'ai ouvert un terminal et j'utilise Sudo service network-manager restart car je ne vois aucune connexion. dans le menu déroulant de gestionnaire de réseau. Ce n'est qu'après cette commande que Network Manager démarre et se connecte automatiquement.

Existe-t-il un paramètre qui empêche le gestionnaire de réseau de devoir être redémarré chaque fois que la connexion est interrompue (par opposition à ma déconnexion lorsque le redémarrage n’est pas nécessaire)?

En d'autres termes, je suppose que je ne veux pas que le gestionnaire de réseau cesse de fonctionner tant que j'utilise l'ordinateur, que ma connexion au fournisseur de services Internet ait été interrompue ou non.

Ce n’est pas très grave d’ouvrir un terminal et de saisir la commande et le mot de passe, mais s’il existe un moyen de s’assurer que le gestionnaire de réseau ne s’arrête pas, ce serait mieux.

édition datée du 26 janvier 2012: lignes de 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

Voici un script Upstart que vous pouvez placer dans /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

En cas de perte d'une adresse ip pour eth0 (configurez votre interface si elle est différente), il redémarre le travail du gestionnaire de réseau et restaure la connectivité.

16
Tuminoid

Essayez wicd au lieu de network-manager, il a été recommandé pour un cas similaire: https://bbs.archlinux.org/viewtopic.php?id=12444

Je ne sais pas si cela résoudra le problème ni si wicd prend en charge pppoe.

  1. Sauvegardez les fichiers .deb, juste au cas où:

    Sudo apt-get download network-manager network-manager-gnome
    
  2. Purger le gestionnaire de réseau et installer wicd

    Sudo apt-get purge network-manager network-manager-gnome
    Sudo apt-get install wicd wicd-gtk
    
  3. Redémarrez. Essayez de vous connecter en utilisant wicd.

En cas de problème, supprimez simplement wicd et réinstallez le gestionnaire de réseau:

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

Une solution rapide et sale consiste à écrire un script qui exécute ping -i 5 google.com || service network-manager restart en tant que root (vous pouvez écrire un fichier /etc/init.d/-daemon pour cela, mais comme la solution est TRES sale, je ne le ferais pas)

Ce script redémarre le gestionnaire de réseau chaque fois que Google n’est pas trouvé et le contrôle toutes les cinq secondes.

2
sakjur

Pourquoi je réponds à cette question?

Il y a de très bonnes réponses, mais tout est écrit en utilisant init ou upstart. A partir de maintenant, nous utiliserons systemd, j'écris un meilleur script et des informations. sur la façon de le faire.

Mais y a-t-il un moyen?

Est, il y a un moyen. Il vous suffit de créer un script qui surveille l'état de votre réseau et de redémarrer Network Manager à la demande. Nous allons créer ce script et un service systemd qui sera démarré avec le système et surveillerons l’état de votre réseau toutes les 5 secondes pour déterminer si vous êtes en ligne ou non.

Que dois-je faire?

Tout d’abord, nous devons installer l’outil fping qui effectue l’un des tests de connexion (fping return "est actif" si une connexion est possible et "adresse introuvable" sinon):

$ Sudo apt-get install fping -y

Nous allons maintenant créer le script de contrôle sur notre système. Créez un fichier dans/usr/local/bin/appelé nm-watcher:

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

Et éditez-le en utilisant nano ou votre éditeur de texte préféré:

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

Copiez et collez ce script dans l'éditeur, enregistrez et fermez le fichier (si vous utilisez nano, comme dans ce tutoriel, utilisez "CTRL + X" "Y" et "ENTRÉE" dans l'ordre). N'oubliez pas de changer wlan0 pour l'interface que vous voulez que wm-watcher surveille:

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

Pour exécuter ce script, nous devons le rendre exécutable:

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

Nous allons maintenant créer le service SystemD. Pour cela, vous devez créer et éditer le fichier nm-watcher.service dans/etc/systemd/system /:

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

Et mettez ce contenu dans le fichier:

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

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

[Install]
WantedBy=multi-user.target

Cela créera le fichier de service qui demandera à SystemD d'appeler le script que nous avons créé à chaque démarrage, après avoir établi une connexion à l'aide de network-manager.service.

Nous devrions savoir permettre à ce service de fonctionner en utilisant:

$ Sudo systemctl enable nm-watcher.service

Et démarrez le service en tapant:

$ Sudo service nm-watcher start

Pour vérifier si le service est en cours d'exécution, tapez:

$ Sudo service nm-watcher status

Si vous rencontrez des problèmes avec le service, vous pouvez voir les messages de débogage en utilisant:

$ Sudo journalctl -u nm-watcher

Dois-je faire autre chose?

Non, c’est tout ce qui est nécessaire pour accomplir cette tâche. Ce script a un impact très faible sur les performances du système, comme vous pouvez le voir sur cette capture d'écran:

nm-watcher footprint

0
Alexandre Teles

Sur mon ancien ordinateur portable, j'avais une mauvaise carte WiFi qui avait tendance à se déconnecter du WiFi en cas de charge importante (téléchargement de fichiers volumineux, etc.).

J'ai créé un script simple pour vérifier si mon Internet était toujours connecté, et si ce n'était pas le cas, redémarrez le gestionnaire de réseau.

#!/bin/bash

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

J'ai créé un cronjob racine avec Sudo crontab -e et je l'ai défini de telle sorte que toutes les minutes (vous pouvez le faire plus fréquemment, mais le script est un ping simple, il ne nécessite pas beaucoup de ressources), il l'exécute.

Donc, si mon WiFi était éteint pour une raison quelconque, il ne le serait que pendant environ une minute à la fois, au maximum. Si vous n'êtes pas familier avec cron, je vous recommande de lire this

0
garzai

J'ai fait un script pour ce problème:

#!/bin/bash

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

Cela fonctionne bien, mais ce script prend trop de mon processeur. Quelqu'un peut-il m'aider à réduire l'utilisation du processeur?

0
Jyoti Prakash