Andre Klärner kandre@ak-online.be (So 04 Nov 2012 21:45:08 CET):
Moin Heiko,
On Sun, Nov 04, 2012 at 09:18:27PM +0100, Heiko Schlittermann wrote:
#!/bin/sh
- export LC_ALL=POSIX
- IP=`/sbin/ifconfig eth0 | sed 's/:/ /g' | awk '/inet Adresse/ {print$3}'`
- IP=`/sbin/ifconfig eth0 | sed 's/:/ /g' | awk '/inet addr/ {print$3}'`
„ip“ ist da besser zu parsen und m.W. auch nicht locale-abhängig.
Gibt es eigentlichen einen "ordentlichen" Weg die IP-Adressen/Config auf einem Linux ohne ip/ifconfig oder andere Tools zu ermitteln? Ich mag es nämlich so oder so nicht, das man irgendwie nur Screen-Scraping hat, um solche Informationen zu ermitteln.
Du könntest die API ansehen, die ifconfig oder ip verwenden. Vielleicht kann man das in /proc oder /sys ausgraben. Aber ich denke, genau „ip“ ist dafür gemacht, zu wissen, wo der Kernel das vergraben hat.
Und für die Feststellung, wo Du bist, würde ich nicht die eigene IP nehmen, sondern die MAC-Adresse des Gateways. IP-Adressen ändern sich.
Und was ist wenn das (Hardware-) Gateway ausgetauscht wird oder dynamisch konfigurierte Router sind? Gibt es irgendwo eine Best-Practice der "in welchem Netz bin ich?" Frage? Ich hab ja auch schon gesehen, dass Microsoft damit teilweise auf die Schnauze geflogen ist, die einzige richtig gute Variante für MS-Netze ist ein Domain-Controller.. Aber wie macht man es am bessten für ein Linux-only Netz?
Der Router/GW wird am seltesten getauscht, wenn es mehrere gibt, dann sind es eben verschiedene Konfigurationen, die alle gleich sind. (So habe ich das gelöst, denn in der Praxis ist das sehr selten.)
Was ist denn die „Umgebung“? Ich könnte nach mehr als nur einer MAC-Adresse gucken. Wenn ich X% der erwarteten MACs sehe, bin ich also in einer bestimmten Umgebung. Wenn ich alle meine Heimat-PCs mit ins Büro nehme, bin ich dann netzumgebungsmäßig zu Hause oder im Büro?
Bei IPv6 könnte man - wenn ein Prefix verteilt wird im jeweiligen Netz (was wohl allermeistens so sein wird), nach dem Prefix gucken. Aber IPv6 finden wir nur sehr selten.