Wie zeige ich (nur) die IP-Adresse meines Routers an?

Wie zeige ich (nur) die IP-Adresse meines Routers an?

Welchen Befehl kann ich ausführen, um nur die IP-Adresse meines Routers zu erhalten?

Mit diesem Befehl müsste ich nur die IP meines Routers haben und nicht beispielsweise die ganze Routing-Tabelle (wie wenn ich ausführe route -n).

Antwort1

Einzeiler:

  • nm-tool | grep -i gateway | xargs echo | cut -d' ' -f2
  • nm-tool | grep -i gateway | awk '{print $2}
  • netstat -nr | awk '$1 == "0.0.0.0"{print$2}'
  • arp -n | awk '{print $1}'Hinweis: Funktioniert nur, wenn Ihr Computer der einzige im Netzwerk ist.
  • ip route show | grep -i 'default via'| awk '{print $3 }'

Ausgabe: 192.168.0.1für mich

NOTIZ:

Für 15.04 und höher gibt es kein nm-tool, verwenden Sie also nmcli dev show <IFACE>. Beispiel:

$ nmcli dev show wlan7 | grep GATEWAY                                                                                    
IP4.GATEWAY:                            192.168.0.1
IP6.GATEWAY:                            

Änderungen und zusätzliche Informationen

Wie Sie beim Untersuchen des Befehls sehen können, nehmen wir die Ausgabe von nm-tool(die, beachten Sie, Informationen von NetworkManager übernimmt), suchen die Zeile, die das Wort enthält gateway, drucken die Informationen mit Echo (durch Leerzeichen getrennt) und schneiden dann nur das zweite Element der gesamten Ausgabe ab. Beachten Sie, dass Sie, wenn Sie dort zwei oder mehr Verbindungen haben, möglicherweise den oberen xargs echo | cut -d' ' -f2Teil entfernen und durch ersetzen müssen awk '{print $2}'; mit anderen Worten, die gesamte Zeile würde so aussehen nm-tool | grep -i gateway | awk '{print $2}'. Alternativ hätten Sie es nm-tool | grep -oP '(?i)gateway:\s*\K\S+'so verwenden können, wie von Avinash Raj in den Kommentaren vorgeschlagen. Wie Sie sehen, wird hier nichts Besonderes getan, und die ganze Angelegenheit hier ist lediglich eine Übung im Umgang mit Ausgabebearbeitungstools wie Cut, Awk und Grep.

Eine weitere Methode, um die Gateway-Informationen abzurufen, ist nmcli dev listder Befehl (ja, immer noch abhängig vom Netzwerkmanager). nmcliist die Befehlszeilenversion des Netzwerkmanagers. Sie können ausführen nmcli dev list | grep -i routersoder ausführen nmcli dev list | grep -i 'gw ='. Auch hier können Sie alle anderen Informationen außer der gewünschten IP-Adresse ausschneiden, wenn Sie möchten.

Da in der ursprünglichen Frage nur angegeben wurde, nur das Standard-Gateway zu drucken, verlasse ich mich hier auf die Ausgabe von nm-tool. NetworkManager ist standardmäßig in Ubuntu enthalten und ist die Standardmethode zum Verwalten der Netzwerkverbindungen von Ubuntu. Wenn Sie etwas anderes verwenden, z. B. wicd, oder eine Verbindung über wpa_cli herstellen, gibt Ihnen nm-tool keine Antwort. In diesem Fall finden Sie die Antworten anderer Leute unten möglicherweise nützlicher.

Eine distributions- und konfigurationsneutralere Option wäre die Verwendung von netstat -n, das ähnlich wie eine Kernel-Routingtabelle verwendet route -n. Die Ausgabe ist wie folgt, nichts Überraschendes.

  Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 wlan0
192.168.0.0     0.0.0.0         255.255.255.0   U     9      0        0 wlan0

Und so schneiden Sie die gewünschten Informationen aus:netstat -nr | awk '$1 == "0.0.0.0"{print$2}'

Noch einer, ebenfalls neutral:arp -n | awk '{print $1}'

Antwort2

Sie können es auf viele Arten finden

ip route show default

Eine bessere Frage: Was oder wie möchten Sie die Ausgabe gestalten?

ip route show | awk '/default/ {print $3}'

tracepath -m 1 8.8.8.8 | awk '/1:/ {print $2}' | uniq

Aus den Kommentaren -(danke Avinash Raj 0

tracepath -m 1 8.8.8.8 | awk '/1:/ {print $2;exit}'

Antwort3

Da Sie normalerweise verwenden route -n, können Sie diese sedLösung in Verbindung mit ausprobieren route -n:

route -n | sed -nr 's/(0\.0\.0\.0) +([^ ]+) +\1.*/\2/p' 

Hier ist ein Test:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
192.168.0.0     0.0.0.0         255.255.240.0   U     0      0        0 eth0

$ route -n | sed -nr 's/(0\.0\.0\.0) +([^ ]+) +\1.*/\2/p' 
192.168.1.1

Eine andere Möglichkeit wäre, Folgendes zu verwenden grep:

$ route -n | tr -s ' ' | grep -Po "(?<=0\.0\.0\.0 )[^ ]+(?= 0\.0\.0\.0)"
192.168.1.1

Wie @AvinashRaj betont hat, ist dies nur durch die Verwendung von möglich grep(die Leerzeichen müssen nicht mithilfe von zusammengedrückt werden tr):

route -n | grep -Po "0\.0\.0\.0\s*\K\S+(?=\s*0\.0\.0\.0)"
192.168.1.1

Antwort4

Wenn Sie Zugriff auf einen Webbrowser auf dem System haben, können Sie zuhttp://whatsmyrouterip.com/und es sollte in der Lage sein, Ihre IP ohne Befehl zu finden.

Ansonsten sollte es ausreichen, einfach das Terminal zu öffnen und ein auszuführen ip route | grep default. Abhängig von Ihren Netzwerkschnittstellen kann es jedoch auch mehrere Ergebnisse geben.

verwandte Informationen