Je monte souvent un lecteur distant en utilisant sshfs. J'aimerais avoir cette monture automatiquement. Cependant, si je le monte dans mes scripts .bashrc ou de démarrage, le montage échoue souvent car ma connexion Internet sans fil n'a pas encore été établie.
Est-ce que quelqu'un connaît un moyen simple d'exécuter un script bash chaque fois que la connexion est établie ou de monter automatiquement un lecteur sshfs?
Ajoutez votre script à /etc/network/if-up.d/
. Nommez votre script sans extension '.sh'.
De même, après avoir ajouté le script, exécutez chmod +x /etc/network/if-up.d/yourscriptname
pour donner les autorisations nécessaires.
Assurez-vous que l’interface réseau (par exemple, wlan0 ou eth0) devant déclencher votre script à l’activation est mentionnée dans le fichier /etc/network/interfaces
.
Note de l'éditeur: Cuttlefish n'a pas été mis à jour depuis 2012 et ne figure dans aucun référentiel Ubuntu actuel
Ouvrez Seiche et cliquez sur New.
Je vais répondre à cette partie de la question du PO: "J'aimerais bien avoir ce support automatiquement"
Mon outil préféré pour le montage automatique des partages réseau est autofs: https://help.ubuntu.com/community/Autofs
AutoFS est mon outil de prédilection pour monter mon NAS - sur tous mes ordinateurs portables et stations de travail.
" autofs est un programme permettant de monter automatiquement des répertoires en fonction des besoins. Les montages automatiques sont montés uniquement lors de leur accès et sont démontés après une période d'inactivité. C'est pourquoi le montage automatique Les partages NFS/Samba préservent la bande passante et offrent de meilleures performances globales par rapport aux montages statiques via fstab. "
La méthode la plus simple, la plus simple et la plus simple consiste à ajouter une commande dans n'importe quelle interface sur laquelle vous souhaitez travailler.
Les interfaces se trouvent dans le répertoire "/ etc/network /" sous le nom de fichier "interfaces"
iface elan0 inet manual
up filename.sh
Cela ajoutera la commande up à elan0. Simillarly donne ceci à l'interface que tu veux travailler. N'oubliez pas d'indenter un espace de tabulation.
Assurez-vous de donner les autorisations d'exécution au fichier.
Sudo chmod 755 filename.sh
En ce qui me concerne, la solution /etc/network/if-up.d/
n'a pas fonctionné de ma part, car j'ai ajouté à /etc/network/interfaces
ce qui suit:
auto wlp58s0
iface wlp58s0 inet dhcp
post-up /home/augustin/Config/myscript.sh
Le Wifi commencerait après le redémarrage.
Mais après quelques efforts, de ce lien , ce qui a fonctionné a été d’ajouter le script à /etc/NetworkManager/dispatcher.d/
sous la forme 90myscript.sh
où 90
est le niveau de priorité du script et avec la forme suivante:
#!/bin/bash
IF=$1
STATUS=$2
if [ "$IF" == "wlp58s0" ]
then
case "$2" in
up)
# interface is up
;;
down)
# interface will be down
;;
pre-up)
# interface will be up
;;
post-down)
# interface is down
;;
*)
;;
esac
fi
J'imagine qu'il y a des problèmes entre qui contrôle la configuration du réseau au niveau du système et que le comportement par défaut network
est laissé derrière celui du dispatcheur.
Aussi, pour ceux qui voudraient - comme moi - essayer d’avoir un lien symbolique vers le script (pour stocker le fichier dans un meilleur emplacement), cela n’a malheureusement pas fonctionné pour moi.
J'espère que cela t'aides!
systemd
semble avoir pris le relais de la mise en réseau de nos jours.
$ networkctl
WARNING: systemd-networkd is not running, output will be incomplete.
IDX LINK TYPE OPERATIONAL SETUP
1 lo loopback n/a unmanaged
2 enp0s25 ether n/a unmanaged
3 wlo1 wlan n/a unmanaged
3 links listed.
Il a aussi des unités correspondant aux interfaces
$ systemctl list-units |grep wlo1
sys-devices-pci0000:00-0000:00:1c.3-0000:24:00.0-net-wlo1.device loaded active plugged Centrino Ultimate-N 6300 (3x3 AGN)
sys-subsystem-net-devices-wlo1.device loaded active plugged Centrino Ultimate-N 6300 (3x3 AGN)
Apparemment, vous pouvez utiliser ces fichiers dans les fichiers d’unités de service. Il suffit donc de créer une unité de service pour exécuter votre script et d’utiliser quelque chose comme cela à l’intérieur pour le faire exécuter de manière conditionnelle sur le réseau:
BindsTo=sys-subsystem-net-devices-wlo1.device
After=sys-subsystem-net-devices-wlo1.device
Bonne chance! Je n'ai pas testé cela, donc "votre kilométrage peut varier".
Sources: