Comment exécuter un script, en fonction de la connexion Internet

44

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 facile d'exécuter un script bash chaque fois que la connexion est établie ou de monter automatiquement un disque sshfs?

    
posée jmite 20.02.2013 - 04:48
la source

6 réponses

50

Ajoutez votre script à /etc/network/if-up.d/ . Nommez votre script sans extension «.sh».

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) qui devrait déclencher votre script lorsqu’elle est activée est mentionnée dans le fichier /etc/network/interfaces .

    
réponse donnée dedunumax 20.02.2013 - 05:00
la source
25

Note de l'éditeur: Cuttlefish n'a pas été mis à jour depuis 2012 et ne se trouve dans aucun référentiel Ubuntu actuel

Ubuntu 12.04

  • Installez Cuttlefish : un outil simple qui réalise des réflexes sur votre ordinateur en exécutant des actions lorsque des événements spécifiques sont déclenchés.
  • Ouvrez Cuttlefish et cliquez sur New .

    • Donnez-lui un nom et changez l'option Activé par stimulus à ON.
    • Cliquez sur Stimulus , sélectionnez la catégorie Réseau et tapez Se connecter au WLAN . Cliquez sur OK.

    • Vous pouvez également sélectionner le SSID du réseau sans fil et vous avez la possibilité de le vérifier ou non au démarrage.

    • Maintenant, vous devrez spécifier une réaction. Accédez à l'onglet Réaction , puis cliquez sur Ajouter. Sélectionnez Applications dans la catégorie et Démarrer l’application (en mode avancé) à partir du type.

    • Spécifiez maintenant le script que vous souhaitez exécuter dans l'option exécutable. Vous pouvez même passer des paramètres au script.

    • Et c'est ça! Veillez également à ajouter Cuttlefish dans les applications de démarrage. Allez dans Modifier & gt; Préférences et activez l'option de démarrage automatique.

réponse donnée ignite 20.02.2013 - 05:19
la source
1

Le moyen le plus simple et le plus simple serait d’ajouter une commande à l’interface sur laquelle vous voulez travailler.

Les interfaces peuvent être trouvées 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 donner à ce que l'interface que vous voulez travailler sur. 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
    
réponse donnée Revanth Kumar 11.03.2015 - 07:35
la source
1

Je répondrai à cette partie de la question OP: "J'adorerais avoir cette monture automatiquement"

Mon outil préféré pour monter automatiquement des partages réseau est autofs: lien

AutoFS est mon outil de choix pour monter mon NAS - pour tous mes ordinateurs portables et postes de travail.

" autofs est un programme pour monter automatiquement des répertoires selon les besoins. Les montages automatiques ne sont montés que lorsqu’ils sont accédés et sont démontés après une période d’inactivité. Pour cette raison, montez automatiquement NFS / Samba share conserve la bande passante et offre de meilleures performances globales par rapport aux montages statiques via fstab. "

    
réponse donnée RBell 24.06.2016 - 09:10
la source
0

En ce qui me concerne, la solution /etc/network/if-up.d/ ne fonctionnait pas de ma part car lorsque j'ai ajouté à /etc/network/interfaces les éléments suivants:

auto wlp58s0
iface wlp58s0 inet dhcp
post-up /home/augustin/Config/myscript.sh

Wifi commencerait après le redémarrage.

Mais après quelques difficultés, de ce lien , ce qui a fonctionné était pour ajouter le script à /etc/NetworkManager/dispatcher.d/ sous la forme 90myscript.sh90 est le niveau de priorité du script et sous la forme suivante:

#!/bin/bash

IF=
STATUS=

if [ "$IF" == "wlp58s0" ]
then
    case "" in
        up)
        # interface is up
        ;;
        down)
        # interface will be down
        ;;
        pre-up)
        # interface will be up
        ;;
        post-down)
        # interface is down
        ;;
        *)
        ;;
    esac
fi

Je suppose qu'il y a des problèmes entre qui contrôle la configuration du réseau au niveau du système et parfois le comportement par défaut de network reste derrière celui du répartiteur.

Aussi, pour ceux qui voudraient - comme moi - essayer d’avoir un lien symbolique vers le script (pour stocker le fichier dans un meilleur emplacement), malheureusement, cela n’a pas fonctionné pour moi.

J'espère que ça aide!

    
réponse donnée Augustin Riedinger 28.02.2018 - 13:07
la source
0

systemd semble avoir pris le contrôle du 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 comporte également 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 les utiliser dans les fichiers d’unité de service. Alors, créez simplement une unité de service pour exécuter votre script et utilisez quelque chose comme ça à l'intérieur pour le faire fonctionner conditionnellement 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, alors "votre kilométrage peut varier".

Sources:

réponse donnée Rolf 30.03.2018 - 14:39
la source

Lire d'autres questions sur les étiquettes