web-dev-qa-db-fra.com

Configurez la connexion automatique au point d’accès uniquement lors d’une connexion Ethernet

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:

  • me connecte au point d'accès chaque fois que je suis connecté à Internet via une connexion filaire.
  • me déconnecte du point d'accès sans connexion Ethernet.
  • me connecte automatiquement à l’un des réseaux avec autoconnect = true chaque fois qu’ils sont disponibles et qu’il n’ya pas de connexion Ethernet.

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.

8
Bib-lost

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.

2
Elder Geek

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.

1
Bib-lost