So führen Sie ein Skript aus, abhängig von der Internetverbindung

So führen Sie ein Skript aus, abhängig von der Internetverbindung

Ich mounte ein Remote-Laufwerk häufig mit sshfs. Ich würde das gerne automatisch machen. Wenn ich es jedoch in meiner .bashrc- oder Startskriptdatei mounte, schlägt das Mounten häufig fehl, weil meine drahtlose Internetverbindung noch nicht hergestellt wurde.

Kennt jemand eine einfache Möglichkeit, bei jedem Verbindungsaufbau ein Bash-Skript auszuführen oder ein SSHFS-Laufwerk automatisch zu mounten?

Antwort1

Fügen Sie Ihr Skript hinzu /etc/network/if-up.d/. Benennen Sie Ihr Skript ohne die Erweiterung „.sh“.

Führen Sie das Skript auch nach dem Hinzufügen aus, chmod +x /etc/network/if-up.d/yourscriptnameum die erforderliche Berechtigung zu erteilen.

Stellen Sie sicher, dass die Netzwerkschnittstelle (z. B. wlan0 oder eth0), die beim Einschalten Ihr Skript auslösen soll, in der Datei erwähnt wird /etc/network/interfaces.

Antwort2

Anmerkung des Herausgebers: Cuttlefish wurde seit 2012 nicht mehr aktualisiert und befindet sich in keinem aktuellen Ubuntu-Repositories

Ubuntu 12.04

  • InstallierenTintenfisch: Ein einfaches Tool, das Reflexe auf Ihrem Computer realisiert, indem es Aktionen ausführt, wenn bestimmte Ereignisse ausgelöst werden.
  • Öffnen Sie Cuttlefish und klicken Sie auf New.

    Schritt 1

    • Geben Sie ihm einen Namen und ändern SieDurch Reiz aktiviertauf EIN.
    • Klicke aufStimulus, wählen Sie die KategorieNetzwerkund TypMit WLAN verbinden. OK klicken.

    Schritt 2

    • Sie können auch die SSID des drahtlosen Netzwerks auswählen und haben die Option, diese beim Start zu überprüfen oder nicht.

    Schritt 3

    • Nun müssen Sie eine Reaktion angeben. Gehen Sie zuReaktionund klicken Sie auf „Hinzufügen“. Wählen SieAnwendungenaus der Kategorie undAnwendung starten (im erweiterten Modus)vom Typ.

    Schritt 4

    • Geben Sie nun in der ausführbaren Option das Skript an, das Sie ausführen möchten. Sie können dem Skript sogar Parameter übergeben.

    Schritt 5

    • Und das ist es! Stellen Sie außerdem sicher, dass Sie Cuttlefish zu den Startanwendungen hinzufügen. Gehen Sie zuBearbeiten > Voreinstellungenund aktivieren Sie die Autostart-Option.

    Schritt-6

Antwort3

Ich werde diesen Teil der OP-Frage beantworten: „Ich hätte diese Halterung gerne automatisch“

Mein bevorzugtes Tool zum automatischen Mounten von Netzwerkfreigaben ist autofs: https://help.ubuntu.com/community/Autofs

AutoFS ist mein bevorzugtes Tool zum Mounten meines NAS – für alle meine Laptops und Workstations.

"autofs ist ein Programm zum automatischen Mounten von Verzeichnissen nach Bedarf. Auto-Mounts werden nur gemountet, wenn auf sie zugegriffen wird, und nach einer Zeit der Inaktivität wieder demontiert. Aus diesem Grund spart das automatische Mounten von NFS/Samba-Freigaben Bandbreite und bietet eine bessere Gesamtleistung im Vergleich zu statischen Mounts über fstab."

Antwort4

systemdscheint heutzutage die Vernetzung übernommen zu haben.

$ 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.

Es verfügt auch über Einheiten, die den Schnittstellen entsprechen

$ 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)

Offensichtlich können Sie diese in Service-Unit-Dateien verwenden. Erstellen Sie also einfach eine Service-Unit, um Ihr Skript auszuführen, und verwenden Sie darin etwas wie das hier, damit es bedingt im Netzwerk ausgeführt wird:

BindsTo=sys-subsystem-net-devices-wlo1.device
After=sys-subsystem-net-devices-wlo1.device

Viel Glück! Ich habe das nicht getestet, daher kann es bei Ihnen anders sein.

Quellen:

verwandte Informationen