[[Vorlage(getestet, intrepid, hardy, gutsy)]] {{{#!vorlage Wissen [:Editor: Einen Editor öffnen] [:Rechte: Rechte von Ordnern und Dateien ändern] }}} [[Inhaltsverzeichnis(2)]] Der Network-Manager kann mehr als nur eine Verbindung auf- und wieder abbauen. Der Network-Manager kann bei Verbindungsauf- und abbau Skripte ausführen. Diese Funktionen sind jedoch nicht von der grafischen Oberfläche aus erreichbar. Dies macht der NetworkManager über die sogenannten Dispatcher-Skripte, die ausgeführt werden, wenn der NetworkManager eine Aktion durchführt, z.B. wenn er sich zu einem WLAN verbindet oder davon trennt. = Was ist ein Dispatcher-Skript = {{{#!vorlage Warnung Das Skript '''/etc/NetworkManager/dispatcher.d/01ifupdown''' sollte man niemals löschen oder modifizieren. Es ist ein grundlegender Bestandteil der Funktionalität des NetworkManagers und wird in unveränderter Form für die Funktion des Network-Managers benötigt. }}} Grundsätzlich ist ein Dispatcher-Skript ein ganz normales Shellskript, das in dem Ordner '''/etc/NetworkManager/dispatcher.d/''' liegt. Diese Skripte werden dann vom Network-Manager bei einer Änderung an den Netzwerken mit zwei Parametern aufgerufen: Netzwerkschnittstelle und Aktion. In dem Ordner können mehrere Skripte liegen, diese werden in alphabetischer Reihenfolge abgearbeitet. Ein Skript liegt bereits in dem Ordner, '''01ifupdown''', dieses ist das Grundskript des NetworkManagers und sorgt dafür, dass die Netzwerkschnittstellen richtig initialisiert werden. == Aktionen == ||<-3 tablestyle="width: 95%;" cellstyle="text-align: center; background-color: #E2C890;">'''Dispatcher Aktionen'''|| ||'''Aktion'''||'''Bedeutung'''||'''Anwendungsbeispiel'''|| || ''pre-up'' || Aktionen, die vor dem Aufbau der Netzwerkverbindung ausgeführt werden || Üblicherweise führt man [:iptables:] Regeln aus, bevor ein Verbindung aufgebaut wurde, so ist beispielsweise ein Netzwerkdienst nie aus dem Netz erreichbar. || || ''up'' || Aktionen, die nach dem Aufbau der Netzwerkverbindung ausgeführt werden || Mountet man Netzwerkfreigaben über ein Netzwerk, so kann man dieses an dieser Stelle ausführen lassen. || || ''down'' || Aktionen, die vor dem Abbau der Netzwerkverbindung ausgeführt werden || Hat man Netzwerkfreigaben eingebunden, so sollte man diese vor dem Verbindungsabbau aushängen. Erst dann kann man sicher gehen, dass alle Daten korrekt geschrieben wurden. || || ''post-down'' || Aktionen, die nach dem Aufbau der Netzwerkverbindung ausgeführt werden || Hier kann man beispielsweise die bei ''"pre-up"'' ausgeführten iptables Regeln wieder rückgängig machen, || = Was kann man damit machen? = Eigentlich alles was ein Skript so kann... man sollte aber nur sinnvolle Dinge wie z.B. automatischer Uhrzeitabgleich, Starten eines VPN-Clients oder Umschalten der [:iptables: iptables-Konfiguration] machen. == Beispiele == === Uhrzeitabgleich === Um einen automatischen Abgleich der Uhrzeit mit einem [wikipedia:Network_Time_Protocol:NTP-Server] im Netzwerk durchzuführen, braucht man nur ein Skript, das '''ntpdate''' aufruft und ihm "sagt", dass er sich von einem Zeitserver die aktuelle Zeit holen soll. Mit einem Editor mit Root-Rechten [1] kann man dazu beispielsweise das Skript '''/etc/NetworkManager/dispatcher.d/02uhrzeitabgleich''' erstellen. Als Inhalt fügt man folgendes ein. {{{ #!/bin/sh #/etc/NetworkManager/dispatcher.d/02uhrzeitabgleich #Aktion einlesen ACTION=$2 #ist das Netzwerk oben? if [ "$ACTION" = "up" ]; then #Zeit vom deutschen NTP-Zeitserver-Pool holen soll ntpdate de.pool.ntp.org fi }}} Nach dem Speichern, muss es noch ausführbar [2] gemacht werden. Anschließend wird bei jedem Verbindungsaufbau des Rechners die Uhrzzeit abgeglichen. === VPNC starten === Man kann auch bei wechselnden WLAN-Umgebungen für einzelne Netze bestimmte Funktionen durchführen lassen. Dies wird hier gezeigt mit dem Beispiels "VPNC in der Uni". {{{ #!/bin/bash ## INITIALISIERUNG #Diese Werte werden vom NetworkManager an das Skript übergeben INTERFACE=$1 ACTION=$2 ## ESSID des Universitäts-Netzwerkes ESSID_VPN="VPN/WEB" ## ESSID des verbundenen Netzwerks bestimmen ESSID=$(iwconfig $INTERFACE | grep ESSID | cut -d":" -f2 | sed -e 's/"//g') ## Funktionen durchführen, je nach Aktion eine andere case "$2" in up) if [ "$ESSID" = "$ESSID_VPN" ]; then vpnc /etc/vpnc/uni.conf fi ;; down) if [ "$(pidof vpnc)" ]; then vpnc-disconnect killall vpnc fi ;; pre-up) ;; post-down) ;; *) echo $"Usage: $0 {up|down|pre-up|post-down}" exit 1 esac }}} Bei dieser Art, zu einem VPN-gesicherten WLAN zu verbinden, muss das Passwort im Klartext in der Datei '''/etc/vpnc/uni.conf''' gespeichert werden. Die Datei sollte daher root gehören und darf für andere nicht lesbar sein [2]: {{{#!vorlage Befehl sudo chown root:root /etc/vpnc/uni.conf sudo chmod 700 /etc/vpnc/uni.conf }}} Das Skript '''/etc/NetworkManager/dispatcher.d/02uni-vpnc''' muss außerdem noch ausführbar gemacht werden [2]. Nun wird beim Verbindungsaufbau überpüft, ob man sich zu einem WLAN mit dem Namen ''"VPN/WEB"'' verbindet und falls dies der Fall ist automatisch eine VPN-Verbindung mittels [:vpnc:] ausgeführt.