Tester que l’accès à Internet est ok avec NetworkManager.

Avant de démarrer certaines tâches qui ont besoin d’Internet on peut faire vérifier par NetworkManager que c’est bien le cas.

Modifier la configuration de NetworkManager

ça se passe dans le fichier /etc/NetworkManager/NetworkManager.conf

On ajoute la section Connectivity

[main]
plugins=ifupdown,keyfile
dns=dnsmasq
dhcp=dhclient

[ifupdown]
managed=false

[connectivity]
uri=http://network-test.debian.org/nm
interval=120

Voir https://developer.gnome.org/NetworkManager/stable/NetworkManager.conf.html

Modifier le service de test du réseau

sudo systemctl edit NetworkManager-wait-online.service

Ajouter les lignes au début: temporisation d’attente de 5 mn pour attendre une vraie connexion à Internet.

[Service]

ExecStart=

ExecStart=/usr/bin/nm-online -q

Environment=NM_ONLINE_TIMEOUT=600

### Editing /etc/systemd/system/NetworkManager-wait-online.service.d/override.conf
### Anything between here and the comment below will become the new contents of the file

[Service]
ExecStart=
ExecStart=/usr/bin/nm-online -q
Environment=NM_ONLINE_TIMEOUT=600

### Lines below this comment will be discarded

### /lib/systemd/system/NetworkManager-wait-online.service
# [Unit]
# Description=Network Manager Wait Online
# Documentation=man:nm-online(1)
# Requires=NetworkManager.service
# After=NetworkManager.service
# Before=network-online.target
# 
# [Service]
# # `nm-online -s` waits until the point when NetworkManager logs
# # "startup complete". That is when startup actions are settled and
# # devices and profiles reached a conclusive activated or deactivated
# # state. It depends on which profiles are configured to autoconnect and
# # also depends on profile settings like ipv4.may-fail/ipv6.may-fail,
# # which affect when a profile is considered fully activated.
# # Check NetworkManager logs to find out why wait-online takes a certain
# # time.
# 
# Type=oneshot
# #ExecStart=/usr/bin/nm-online -s -q
# RemainAfterExit=yes
# 
# # Set $NM_ONLINE_TIMEOUT variable for timeout in seconds.
# # Edit with `systemctl edit NetworkManager-wait-online`.
# #
# # Note, this timeout should commonly not be reached. If your boot
# # gets delayed too long, then the solution is usually not to decrease
# # the timeout, but to fix your setup so that the connected state
# # gets reached earlier.
# Environment=NM_ONLINE_TIMEOUT=60
# 
# [Install]
# WantedBy=network-online.target

Voir https://developer.gnome.org/NetworkManager/stable/nm-online.html

Prendre en compte dans les services qui ont besoin d’Internet

Il faut ajouter le paramètre Requires=network-online.target

Exemple mon service de mise à jour

[Unit]
Description=Mise à jour périodique
Requires=NetworkManager-wait-online.service
After=exim4.service
[Install]
WantedBy=graphical.target
[Service]
Type=oneshot
ExecStart=/opt/update-perso

Et voila, NetworkManager attends bien que ma box soit ok avant le déclenchement des tâches conditionnées.

systemd-analyze plot > boot-après-modif-NetworkManager-wait-online.svg

D’autres infos sur NetworkManager

https://wiki.archlinux.org/index.php/NetworkManager

Par Bidouille De Bian

Bidouilleur sur Linux Debian 10 (Buster). Débutant dans le blog sur Wordpress.

Créez votre site Web avec WordPress.com
Commencer
%d blogueurs aiment cette page :