J'ai un ordinateur sous Ubuntu Gnome 16.04. Au redémarrage, parfois (au hasard) la carte réseau disparaît. C’est-à-dire eth0
disparaît de ifconfig
, lspci
etc. Je ne peux pas ramener eth0
sans 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 cron
semble ê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 systemd
et que upstart n'est plus recommandé. J'ai également écrit un systemd
fichier 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