Linux: Status feststellen, ob Interface per DHCP konfiguriert wurde

Grizzly

Top Contributor
Hallo alle zusammen, :)

vielleicht hat jemand von Euch eine Idee dazu:
Ich möchte unter Linux (Ubuntu 10.04.3 LTS Server) feststellen, ob ein Interface seine Konfiguration per DHCP bezogen hat. Die Problematik an der Sache: Ich möchte den aktuellen aktiven Stand wissen und nicht den, der in der /etc/network/interfaces steht. Bisher habe ich aber kein Programm und keine Datei gefunden, deren Ausgabe / Inhalt ich auslesen könnte. :-(
 
N

nillehammer

Gast
Hab grad kein Linux hier. Deswegen erstmal zwei ungetestete Ideen
1. ifconfig gibt die Informationen evtl aus. Du könntest es also aufrufen mit Runtime.exec
2. Irgendwoher muss ifconfig diese Informationen ja haben. Meist steht sowas gut versteckt irgendwo unter /proc. /proc/network wäre ein guter Startpunkt zum Suchen.

Heut Abend schau ich mir das mal genauer an...
 

HoaX

Top Contributor
Eine 100% Lösung gibt es dafür nicht, denn dem Interface ist es egal woher es seine IP hat.
Ich würde a) prüfen ob das Gerät eine IP hat b) zusätzlich ein DHCP-Client läuft (bei Ubuntu im Normalfall "dhclient") und c) was die letzten Log-Meldungen vom DHCP-Client in der /var/log/syslog ist.

Die PID vom (evtl.) aktiven dhclient findest du in /var/run/dhclient-wlan0.pid, entsprechend dem Interface.
Unter /var/lib/dhcp3/ liegen die Dateien mit den Lease-Informationen. Die alleine sind aber keine Garantie dass der DHCP-Client auch gerade aktiv ist, auch wenn eine gültiges Lease dabei ist.
 
Zuletzt bearbeitet:

Grizzly

Top Contributor
Also über die ifconfig geht es definitiv nicht. Da habe ich mir schon die Finger wund gesucht.

Eine Lösung über das /proc Verzeichnis wäre cool - wenn das geht.

Die Geschichte über "ps -Al | grep dhclient" habe ich mir auch mal angeschaut. Die finde ich irgendwie am "gebastelsten", scheint mir aktuell aber der einzig gangbare Weg. Ist der DHCP-Client halt nach der Adressvergabe aus irgendwelchen Gründen "gestorben", ist auch wieder tote Hose. Wobei dann irgendein schwerwiegenderer Systemfehler vorliegen müsste. Ich muss auch einmal ausprobieren, was passiert, wenn man ein Device im laufenden Betrieb über die /etc/network/interfaces von "dhcp" auf "static" umstellt und mir "/etc/init.d/networking restart" das Netzwerk neu startet. Ob dann auch wirklich der DHCP Client beendet wird oder was da passiert.
Übrigens habe ich mir die Lease-Informationen auch mal angeschaut. Ich denke, dass man dann eher auf die Prozess-Geschichte bauen sollte, da - so scheint es mir - die Lease-Dateien nicht aufgeräumt werden. Also zumindest in meinen Versuchen, soweit ich sie durchführen konnte, hatte ich teilweise sogar mehrere Einträge dort drin. Und ich konnte auch nicht herauslesen, ob diese noch verwendet werden oder nicht. Das könnte man allerhöchsten verwenden, nachdem man die Existenz des Prozesses getestet hat, um an die Einstellungen zu kommen. Dann kann ich aber auch gleich "/sbin/ifconfig -a" und "/sbin/route -n" verwenden sowie die "/etc/resolv.conf" auslesen. Wobei ich bei letzterer noch feststellen müsste, zu welchem Adapter die Einstellungen gehören bzw. ob diese dort fest eingetragen wurden oder vom DHCP bezogen wurden. Da müsste ich vielleicht dann doch wieder in die Lease-Datei schauen, in der das netterweise drin steht.

Wäre cool, wenn Ihr noch weitere Anregungen hättet. :)
 

Ähnliche Java Themen


Oben