Redémarrage de l'ordinateur lorsque Ethernet ne démarre pas avec l'ordinateur


0

J'ai un ordinateur sous Ubuntu Gnome 16.04. Au redémarrage, parfois (au hasard) la carte réseau disparaît. C’est-à-dire eth0disparaît de ifconfig, lspcietc. Je ne peux pas ramener eth0sans redémarrage dans de telles situations. Naturellement, la machine n'est pas connectée à Internet lorsque cela se produit. De plus, en général, un simple redémarrage corrige le problème et l’éthernet s’affiche à nouveau.

Je ne sais pas comment commencer à déboguer cela. Cependant, j'aimerais avoir un script ou un service qui vérifie si l'Ethernet a été chargé (l'ordinateur est connecté à Internet) et qui redémarre sinon. Ce script ou service doit être exécuté avant la connexion de tout utilisateur, car parfois je redémarre la machine à distance et je perds son accès si Ethernet ne s'affiche pas.

J'ai un script qui vérifie si Internet est connecté. Mais je n'ai pas réussi à le faire fonctionner au bon moment. J'ai essayé d'utiliser crontab, mais cronsemble être initialisé avant la connexion Internet, (comme les enregistrements du fichier journal); J'ai essayé de placer un script upstart /etc/init/, mais je me suis rendu compte qu'Ubuntu utilise maintenant systemdet que upstart n'est plus recommandé. J'ai également écrit un systemdfichier d'unité et mes résultats sont mitigés (bootloop et rien). Qu'est-ce que je fais mal?

Script de test de connectivité Internet

#!/bin/bash

ping -c 1 8.8.8.8 > /dev/null
if [ $? -eq 0 ]; then
  echo "ok"
else
  reboot
fi

systemd fichier unité qui a provoqué bootloop

[Unit]
Description=Tests Internet connectivity. Reboots if not connected.
After=network.target syslog.target

[Service]
Type=forking
ExecStart=/usr/local/bin/internet_test.sh
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=InternetTest

[Install]
WantedBy=multi-user.target

systemd fichier d'unité qui n'a rien fait (même le service ne s'est pas enregistré au démarrage)

[Unit]
Description=Tests Internet connectivity. Reboots if not connected.
After=multi-user.target

[Service]
Type=forking
ExecStart=/usr/local/bin/internet_test.sh
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=InternetTest

Réponses:


0

Ces deux fichiers ont fait l'affaire:

internet_test.sh (teste si l'ordinateur est en ligne)

#!/bin/bash

/usr/bin/nm-online -q --timeout=30

if [ $? -eq 0 ]; then
  echo "ok"
else
  reboot
fi

systemd fichier unité

[Unit]
Description=Tests Internet connectivity. Reboots if not connected.
After=NetworkManager.service

[Service]
Type=oneshot
ExecStart=/usr/local/bin/internet_test.sh
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=InternetTest
RemainAfterExit=no

[Install]
WantedBy=multi-user.target

Merci à la documentation et à la perserverence.


Avertissement: l'utilisateur peut toujours être en mesure de se connecter avant l' nm-onlineexpiration du délai. Ensuite, l'ordinateur va redémarrer brutalement.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.