Quelle commande puis-je exécuter pour obtenir uniquement l'adresse IP de mon routeur?
Avec cette commande, je ne devrais avoir que l'IP de mon routeur et non, par exemple, toute la table de routage (comme lorsque je cours route -n
).
Quelle commande puis-je exécuter pour obtenir uniquement l'adresse IP de mon routeur?
Avec cette commande, je ne devrais avoir que l'IP de mon routeur et non, par exemple, toute la table de routage (comme lorsque je cours route -n
).
One-liners:
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}'
Remarque: ne fonctionne que si votre machine est la seule sur le réseauip route show | grep -i 'default via'| awk '{print $3 }'
sortie: 192.168.0.1
pour moi
REMARQUE :
Pour la version 15.04 et ultérieure, il n'y en a pas nm-tool
, alors utilisez nmcli dev show <IFACE>
. Par exemple,
$ nmcli dev show wlan7 | grep GATEWAY
IP4.GATEWAY: 192.168.0.1
IP6.GATEWAY:
Modifications et informations supplémentaires
Comme vous pouvez le voir en examinant la commande, nous prenons la sortie de nm-tool
(qui, notez-le, prend les informations de NetworkManager), trouvons la ligne contenant le mot gateway
, imprimons les informations avec écho (séparées par des espaces), puis coupons uniquement le deuxième élément de cet ensemble sortie. Notez que si vous avez deux connexions ou plus, vous devrez peut-être retirer la xargs echo | cut -d' ' -f2
partie supérieure et la remplacer par awk '{print $2}'
; en d'autres termes, la ligne entière ressemblerait à ceci nm-tool | grep -i gateway | awk '{print $2}'
. Alternativement, vous auriez pu utiliser nm-tool | grep -oP '(?i)gateway:\s*\K\S+'
comme proposé par Avinash Raj dans les commentaires. Comme vous pouvez le voir, rien de spécial n'est fait ici, et l'ensemble de l'épreuve ici n'est qu'un exercice d'utilisation des outils d'édition de sortie tels que cut, awk et grep.
Une autre méthode pour obtenir les informations sur la passerelle consiste à nmcli dev list
utiliser la commande (oui, en s'appuyant toujours sur le gestionnaire de réseau). nmcli
est la version en ligne de commande du gestionnaire de réseau. Vous pourriez courir nmcli dev list | grep -i routers
ou vous pourriez courir nmcli dev list | grep -i 'gw ='
. Encore une fois, vous pouvez vous exercer à couper toutes les autres informations, sauf l'adresse IP souhaitée, si vous le souhaitez.
Étant donné que dans la question d'origine, la seule spécification était d'imprimer uniquement la passerelle par défaut, je me fie ici à la sortie de nm-tool. NetworkManager est fourni avec Ubuntu par défaut, c'est la manière standard de gérer les connexions réseau d'Ubuntu. Si vous utilisez quelque chose d'autre, comme wicd ou vous connectez via wpa_cli, nm-tool ne vous fournira pas de réponse. Dans ce cas, vous trouverez peut-être les réponses des autres plus utiles.
Une option plus distro-neutre et config-neutre serait d'utiliser netstat -n
, qui utilise une table de routage du noyau, similaire à route -n
. Sa sortie est en dessous, rien de surprenant.
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
Et voici la façon de découper vos informations souhaitées: netstat -nr | awk '$1 == "0.0.0.0"{print$2}'
Un autre, neutre aussi: arp -n | awk '{print $1}'
nm-tool | grep -oP '(?i)gateway:\s*\K\S+'
eth0
etwlan0
, tous deux activement connectés mais avec une passerelle configurée uniquement surwlan0
, desnm-tool | grep -i gateway | xargs echo | cut -d' ' -f2
sorties simplement0.0.0.0
.nm-tool | grep -oP '(?i)gateway:\s*\K\S+'
produit deux lignes:0.0.0.0
suivi de192.168.1.1
. (Lesip route ...
et lesroute -n ...
moyens produisent juste192.168.1.1
, ce que je considérerais comme le résultat le plus souhaitable.)network-manager
ex. Parifupdown
ouifconfig
.. dans ces casnm-tool
ne générera pas la sortie souhaitée .. en résumé cette réponse repose uniquement sur le réseau géré parnetwork-manager
..Vous pouvez le trouver de nombreuses façons
Une meilleure question, quoi ou comment voulez-vous façonner la sortie?
D'après les commentaires - (merci Avinash Raj 0
la source
uniq
justetracepath -m 1 8.8.8.8 | awk '/1:/ {print $2;exit}'
serait de 5 pouces.tracepath
prend-m
en charge sur certaines versions d'Ubuntu mais pas sur d'autres .Comme vous l'utilisez habituellement
route -n
, vous pouvez essayer cettesed
solution associée àroute -n
:Voici un test:
Une autre façon serait d'utiliser
grep
:Comme l'a souligné @AvinashRaj, cela peut être fait en utilisant uniquement
grep
(pas besoin de compresser les espaces en utilisanttr
):la source
tr
, grep seul fera le travailroute -n | grep -Po "0\.0\.0\.0 \s*\K\S+(?=\s*0\.0\.0\.0)"
J'utilise celui-ci assez souvent:
la source
192.168.0.1
?Si vous avez accès à un navigateur Web sur le système, vous pouvez aller sur http://whatsmyrouterip.com/ et il devrait pouvoir trouver votre ip sans aucune commande.
Sinon, il suffit d’ouvrir le terminal et de faire un
ip route | grep default
. Il peut en donner plusieurs en fonction de vos interfaces réseau.la source
J'utilise cela assez souvent et facile à retenir:
la source
190.200.200.107 172.21.0.1 172.17.0.1 172.19.0.1 172.18.0.1
donc pour obtenir uniquement le problème IP
190.200.200.107
la source