Wie schon in der vorigen Ausgabe stellt Charly wieder ein Tool vor, das seine Stärken besonders in Skripten ausspielt. Ifdata aus dem Moreutils-Paket liefert Statusinformationen von Netzwerk-Interfaces absolut passgenau. Das Herausmeißeln einzelner Werte ist nun nicht mehr nötig.
Wenn ich ein Skript schreibe und darin die Information benötige, ob ein bestimmtes Interface existiert, und wenn ja, welche IP-Adresse und MTU es gerade hat, entsteht fast zwangsläufig sperriger Code. Ich bewerfe dann das Ergebnis von »ip addr show eth0« , »ifconfig« oder »iwconfig« so lange mit »grep« , »cut« und regulären Ausdrücken, bis die gewünschte Information herausgemeißelt ist.
Ifdata aus dem Moreutils-Paket [1] dagegen löst meine Aufgabenstellung elegant und einfach. Mit Parametern steuere ich die Ifdata-Ausgabe so, dass nur das gesuchte Ergebnis erscheint und mehr nicht – das ist ideal, um es in einem Skript weiterzuverarbeiten.
Zunächst möchte ich herausfinden, ob ein bestimmtes Netzwerkinterface überhaupt existiert: »ifdata -e eth0« . Der Befehl erzeugt keine Ausgabe. Ob die Schnittstelle existiert, verrät der Rückgabewert. In einem Skript ist das sehr praktisch, wenn ich ohne weitere Klimmzüge verzweigen will:
if $(ifdata -e eth0); then
echo "Interface gefunden";[...]
else
echo "Interface nicht gefunden";[...]
fi
Eine für Menschen lesbare Ausgabe gibt es auch. Der Parameter »-pe« sorgt dafür, dass Ifdata ein »yes« oder »no« ausgibt. Mit einer Minischleife kann ich mir schnell einen Überblick verschaffen, wie viele Interfaces gerade aktiv sind:
$ for i in `seq 0 3`;do ifdata -pe eth$i;done yes yes yes no
Die Testmaschine hat vier Interfaces, benutzt aber nur drei.
Basisarbeit
Die am häufigsten benötigten Daten – IP-Adresse, Netzmaske, Broadcastadresse und MTU – zeigt Ifdata durch Leerzeichen getrennt mit dem Parameter »-p« an:
$ ifdata -p eth0 10.0.0.106 255.255.255.0 10.0.0.255 1500
Diese Informationen bekäme ich durch Angabe von »-pa« , »-pn« , »-pb« und »-pm« auch einzeln. Wenn ich wissen will, ob das Interface gerade im Promiscuous Mode ist, lasse ich mir per
$ ifdata -pf eth0
eine Liste der Flags zusammenstellen (Abbildung 1). Die Elemente der Liste einzeln abzufragen funktioniert allerdings nicht – zum Glück, denn wer soll sich bitte die ganzen Parameter merken?! Dafür gibt es noch Daten über den Netzwerkverkehr und Fehlerzustände zu eruieren. So kann ich etwa mit
$ ifdata -soe eth0
den Fehlerzähler auslesen – und mich beruhigt anderen Sachen zuwenden, denn der steht auf null.
Infos
- Moreutils: http://joeyh.name/code/moreutils/








