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
Kartik
la source

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.

Kartik
la source