IP-Adresse
Heute stellte sich mir die Frage, wie stelle ich am einfach die IP-Adresse des Rechners unter Linux fest. Eine Google-Suche führte zu Forenbeitrag mit immer neuen Vorschlägen bis hin zu Laufzeitvergleichen der Vorschläge. Wenn Linux Shell Freak in Fahrt kommen, kann sie keiner halten. Wahrscheinlich werden die gesparten Milli-Sekunden sich im Laufe der Jahre zu einen deutlichen Gewinn an Lebenszeit summieren.
Die Frage ist außerdem nicht ganz präzise. Er Rechner hat immer die Loopback Adresse 127.0.0.1. Ein Rechner kann mehrere Netzwerkkarten haben, die wiederum mehrere IP-Adressen haben können. Im letzteren Fall erhalten die Netzwerkkarten allerdings zusätzliche Namen wie beispielsweise eth0:0, eth0:1. Ein VPN-Tunnel erzeugt eine virtuelle Netzwerkkarte mit einer eigenen IP-Adresse. Damit stellt sich die Frage: Welche IP-Adresse hätten Sie denn gerne?
Beschränken wir uns auf zwei Fälle: Der Gerätename ist bekannt und wir brauchen alle IP-Adressen.
Anmerkung: Mein Rechner verwendet eine Netzwerkbrücke, deshalb ist die erste Adresse an br0 statt eth0 gebunden.
Bourne Again Shell (bash)
Fall 1:IP-Adresse eines Gerätes
u1@r1:~> /sbin/ifconfig br0 | sed -n '/inet Adresse:/ { s# *inet Adresse:##; s# .*##p }' 192.168.2.197
Fall 2: IP-Adresse aller Geräte
Wird der Gerätename br0 weg gelassen, liefert der Befehl eine Liste aller Adressen.
u1@r1:~> /sbin/ifconfig | sed -n '/inet Adresse:/ { s# *inet Adresse:##; s# .*##p }' 192.168.2.197 192.168.200.1 127.0.0.1
Wer eine andere Sprachlokalisation verwendet, muss hier den Teil “inet Adresse” anpassen. Ich nehme mir jetzt nicht die Zeit, dies zu Internationalisieren.
Gambas
Hier hab ich noch keine Lösung gefunden.
Windows
Unter Windows ist die Sache nicht ganz so einfach, da so schöne Tools wie sed dort im Allgemeinen nicht installiert sind.
Eine Funktion gibt es hier. Die dort beschrieben Funktion liefert nur die IP-Adresse der ersten Netzwerkkarte. Diese muss jedoch nicht die Aktive sein, z.B. wenn ein Notebook zwischen WLAN und LAN wandert. Besser ist die folgende Lösung.
Mit Visual Basic Script kann eine Liste der IP-Adressen aller Netzwerkkarten mit folgendem VBS ausgegeben werden. Es funktioniert auch mit IPv4 und IPv6 Adressen.
Option Explicit Dim colIPResults, objFile, objFSO, objNIC, objWMI, objWSHNetwork, strAddresses, strIPAddress, strWQL Const FOR_APPENDING = 8 Sub DestroyObjects() If IsObject(objFile) Then Set objFile = Nothing If IsObject(objFSO) Then Set objFSO = Nothing If IsObject(objWMI) Then Set objWMI = Nothing If IsObject(objWSHNetwork) Then Set objWSHNetwork = Nothing ' If IsObject() Then Set = Nothing End Sub Set objFSO = CreateObject("Scripting.FileSystemObject") Set objWSHNetwork = CreateObject("WScript.Network") Set objWMI = GetObject("WinMGMTS:root\cimv2") strWQL = "SELECT IPAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled = 'True'" Set colIPResults = objWMI.ExecQuery(strWQL) For Each objNIC In colIPResults For Each strIPAddress in objNIC.IPAddress If strAddresses = "" Then strAddresses = strIPAddress Else strAddresses = strAddresses + "," + strIPAddress End If Next Next Dim ipaddr Set oShell = CreateObject( "WScript.Shell" ) If strAddresses ="0.0.0.0" Or strAddresses ="" or strAddresses = "undefined" Then ipaddr = "No Connection Detected" Else ipaddr = strAddresses End If echo ipaddr DestroyObjects()
Siehe auch: Byggvir.de: Eigene IP Adresse unter Linux feststellen vom 28. Januar 2012