Actuellement, je bascule quotidiennement entre les deux configurations suivantes:
1) Être connecté à Internet via un réseau WiFi.
2) Connecter mon ordinateur portable (Ubuntu 16.04) à Internet via une connexion filaire, puis partager cette connexion avec mes autres appareils via la fonctionnalité de point d’accès intégré d’Ubuntu.
Pour le moment, passer de 1 à 2 nécessite que je passe manuellement par le dialogue "Se connecter à un réseau caché" dans Network Manager; de même, passer de 2 à 1 nécessite de me déconnecter manuellement du hotspot et de me connecter au réseau WiFi. Ce n’est pas beaucoup de travail, mais je le fais assez souvent pour pouvoir l’automatiser.
Ce n’est pas aussi simple que d’activer l’autoconnexion pour le hotspot, puisqu’elle remplace la fonctionnalité d’autoconnexion d’autres réseaux au lieu de me connecter à un réseau WiFi lorsque je ne suis pas connecté via une connexion filaire, et je me retrouve avec un point pas d'Internet. J'ai donc besoin d'une solution qui:
Une explication complète sur la manière de procéder serait très utile, mais une référence à un bon manuel (non expert) pour la mise en place de ce type de règles serait également très appréciée.
Je crois comprendre que lorsque vous branchez le câble Ethernet qui surpasse la connexion wifi et que celle-ci tombe automatiquement. De la même manière, la déconnexion du câble Ethernet se connecte automatiquement à votre réseau wifi préféré (à condition bien sûr que vous ayez coché la case pour vous connecter automatiquement à ce réseau Wifi sur l'onglet général du gestionnaire de réseau. Testé lors d'une installation par défaut d'Ubuntu 16.04.3
Donc, si je vous comprends bien, vous voulez simplement démarrer automatiquement le service Hotspot sur votre ordinateur portable lorsque le câble Ethernet est connecté et le désactiver lorsque le câble Ethernet est déconnecté.
Cela devrait être assez simple à faire avec un script bash et nmcli
'' nmcli '' est un puissant outil networknig qui vous permet de créer des connexions à votre guise et d'obtenir des tonnes d'informations pertinentes.
Pour savoir sur quelles connexions vous allez créer un script, lancez simplement nmcli -t monitor| grep primary
lorsque vous êtes connecté via wifi et branchez votre câble Ethernet. Les connexions qui vous intéressent avec nmcli
seront celles entourées de '
s Exemple: 'Connexion filaire 1 'La logique est que lorsque' Connection 'est connecté, indiquez le hotspot (vous pouvez juger nécessaire d'utiliser la commande sleep
ou d'utiliser le commutateur -w
pour que nmcli
dans votre script attende un nombre spécifié de secondes pour qu'une commande se termine avant d'émettre la suivante.
Mettre en place une connexion est aussi simple que nmcli 'connection name' down
et en établir une est nmcli 'connection name' up
Remarque: Pour un contrôle total via le script, vous devrez peut-être désactiver l'option de connexion automatique au moins pour votre connexion wifi dans le gestionnaire de réseau, car celui-ci tente de connectez-vous automatiquement dès que vous en avez accès et que cela peut interférer avec ce que vous essayez d'accomplir. Extrait de man nmcli
:
There may be multiple connections that apply
to a device, but only one of them can be active on that device at any
given time. The additional connections can be used to allow quick
switching between different networks and configurations.
Donc, une fois que vous avez déterminé que votre réseau Ethernet est connecté, vous pouvez émettre les commandes pour interrompre la connexion wifi . Exemple: nmcli connection my-wifi down
, puis le Hotspot connexion up Exemple: nmcli connection my-hotspot up
Pour plus d'informations sur la manière d'exécuter automatiquement des scripts basés sur une connexion réseau, voir this. Pour plus de détails sur 'nmcli', consultez la page de manuel. Et voici des informations sur la procédure à suivre créer un hotspot.
Solution qui l'a fait pour moi (trouvée avec l'aide de Elder Geek).
Je garde autoconnect activé pour tous les réseaux auxquels je souhaite me connecter automatiquement, mais désactivé pour le hot-spot. J'ai ensuite mis le script suivant (avec les autorisations appropriées comme décrit sur cette page de wiki ) dans le dossier /etc/NetworkManager/dispatcher.d
!/bin/bash
interf=$1
state=$2
if [ $interf = "my-ethernet-device" -a $state = "up" ]; then
nmcli connection up 'my-hotspot'
fi
if [ $interf = "my-ethernet-device" -a $state = "down" ]; then
nmcli connection down 'my-hotspot'
fi
Cela fonctionne très bien jusqu'à présent. Connexion automatique au point d'accès chaque fois que le câble Ethernet est branché ou même lorsque l'ordinateur démarre ou se réveille avec le câble Ethernet branché. Déconnexion automatique du point d'accès chaud lorsque le câble Ethernet est débranché, suivie d'une connexion automatique aux réseaux WiFi disponibles.