Yönlendiricimin IP adresini nasıl gösterebilirim (sadece)?


22

Yönlendiricimin sadece IP adresini almak için hangi komutu çalıştırabilirim?

Bu komutla yönlendiricimin sadece IP'sine sahip olmalıyım, örneğin bütün yönlendirme tablosu (çalıştırdığım gibi route -n) olmamalı .

Yanıtlar:


22

Tek gömlekleri:

  • 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}' Not: Yalnızca makineniz ağdaki tek makinedeyse çalışır.
  • ip route show | grep -i 'default via'| awk '{print $3 }'

çıktı: 192.168.0.1benim için

NOT :

15.04 ve sonrası için, hayır nm-tool, bu yüzden kullanın nmcli dev show <IFACE>. Örneğin,

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

Düzenlemeler ve ek bilgiler

Komutun incelenmesinden görebileceğiniz gibi, nm-tool(not, NetworkManager'dan bilgi alan) çıktısını alırız , sözcük içeren satır bulur gateway, eko içeren bilgiden yazdırır (boşluklarla ayrılır) ve sonra tümünün sadece ikinci öğesini keseriz çıktı. Orada iki veya daha fazla bağlantınız varsa, üst xargs echo | cut -d' ' -f2kısmı çıkarmanız ve onunla değiştirmeniz gerekebileceğini unutmayın awk '{print $2}'; Diğer bir deyişle, tüm çizgi böyle görünecek nm-tool | grep -i gateway | awk '{print $2}'. Alternatif nm-tool | grep -oP '(?i)gateway:\s*\K\S+'olarak, yorumlarda Avinash Raj tarafından önerilen şekilde kullanılmış olabilir . Gördüğünüz gibi burada özel bir şey yapılmadı ve buradaki sıkıntı sadece kesme, awk ve grep gibi çıktı düzenleme araçlarını kullanmada bir alıştırma.

Ağ geçidi bilgisini almanın başka bir yöntemi de nmcli dev list(evet, hala ağ yöneticisine dayanarak) komutudur. nmcliŞebeke yöneticisinin komut satırı sürümüdür. Kaçabilirsin nmcli dev list | grep -i routersya da kaçabilirsin nmcli dev list | grep -i 'gw ='. Yine, isterseniz, istediğiniz ip adresi hariç, diğer tüm bilgileri kesme alıştırması yapabilirsiniz.

Orijinal sorudaki tek özellik yalnızca varsayılan ağ geçidini yazdırmak olduğundan, burada nm-araç çıktısına güveniyorum. NetworkManager varsayılan olarak Ubuntu ile birlikte gelir, bu Ubuntu'nun ağ bağlantılarını yönetmek için standart yoldur. Wicd gibi başka bir şey kullanırsanız veya wpa_cli aracılığıyla bağlanın, nm-aracı size bir cevap vermez. Bu durumda, diğer kişilerin cevaplarını aşağıda daha yararlı bulabilirsiniz.

netstat -nÇekirdek yönlendirme tablosu kullanan, benzer şekilde, daha bağımsız olan ve config-nötr bir seçenek kullanılacaktır route -n. Çıkışı körüklü, şaşırtıcı bir şey değil.

  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

Ve işte istediğiniz bilgiyi kesmenin yolu: netstat -nr | awk '$1 == "0.0.0.0"{print$2}'

Bir tane daha nötr: arp -n | awk '{print $1}'


basitnm-tool | grep -oP '(?i)gateway:\s*\K\S+'
Avinash Raj

@AvinashRaj Teşekkürler! Grep çalışmadım ve çok derin bir şekilde uğraşmadım, bu yüzden zaten sahip olduğum bilgiler üzerinde çalışıyorum. Bu bilmek güzel olacak
Sergiy Kolodyazhnyy

Muhtemelen bu, konfigürasyonumun bazı (ek) özelliklerinden kaynaklanmaktadır, ancak adaptörleri olan eth0ve wlan0hem aktif olarak bağlanmış hem de sadece üzerinde konfigüre edilmiş bir ağ geçidi olan wlan0, nm-tool | grep -i gateway | xargs echo | cut -d' ' -f2yalnızca çıktıları olan bir makinede olabilir 0.0.0.0. nm-tool | grep -oP '(?i)gateway:\s*\K\S+'İki satır çıktı verir: 0.0.0.0bunu takip eder 192.168.1.1. (En çok istenen sonucu dikkate alacağım yollar ip route ...ve route -n ...yollar tam 192.168.1.1ortaya çıkar.)
Eliah Kagan

Ağ, network-managerörneğin ifupdownveya tarafından yönetilmiyorsa bu işe yaramazsa, ifconfigbu durumlarda nm-toolistenen çıktıyı üretmez ... Özet olarak, bu cevap yalnızca yönetilen ağa dayanır network-manager..
heemayl

@EliahKagan Ah, anlıyorum. Komutumda, içinde 'gateway' bulunan satırları bulur, sonra onu boşluklarla ayrılmış bir satır olarak eko eder ve içindeki ikinci öğeyi keser. Orada iki tane satırın olduğundan, emrim sadece bunlardan birini basıyor. Avinash'ın emri bu durumda daha iyidir. 0.0.0.0 gelince, işte ilgili . Heemayl'ın yorumuna gelince, evet, bu doğru ve OP'nin sorusunda sadece çıktıyı göstermek dışında bir spesifikasyon yoktu
Sergiy Kolodyazhnyy

7

Bunu birçok yolla bulabilirsiniz.

ip route show default

Daha iyi bir soru, çıktıyı nasıl şekillendirmek istersiniz?

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

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

Yorumlardan - (teşekkür ederim Avinash Raj 0

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

uniqSadece 5 in tracepath -m 1 8.8.8.8 | awk '/1:/ {print $2;exit}'olacağı için o gerek yok .
Avinash Raj

çok fazla seçenek. Sistemimde, iki kez tek taraflı yazdırıyor. Çözümünüz de çalışır.
Panter

Not , bazı Ubuntu sürümlerinitracepath desteklemektedir -m, ancak diğerlerinde desteklememektedir .
Eliah Kagan

Bu arada, @ bodhi.zazen, cevabınızda değişkenlik var, traceroute kullanın. Aynı fikir farklı komut, değil mi?
Sergiy Kolodyazhnyy

eminim, muhtemelen komutların ve filtreleme seçeneklerinin uzun bir listesi vardır, sed, awk, perl, grep ...
Panther

6

Genelde kullandığınız gibi route -n, bu sedçözümü birleştiğinde deneyebilirsiniz route -n:

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

İşte bir 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

Başka bir yol kullanmak olacaktır grep:

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

@AvinashRaj'ın belirttiği gibi, bu yalnızca kullanılarak yapılabilir grep(kullanarak boşlukları sıkıştırmaya gerek yoktur tr):

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

kullanmana gerek tryok, tek başına grep işi yapacakroute -n | grep -Po "0\.0\.0\.0 \s*\K\S+(?=\s*0\.0\.0\.0)"
Avinash Raj

1

Bunu oldukça sık kullanıyorum:

route -n | awk '{ print $2 }' | grep -Eo '[1-9]{0,3}\.[1-9]{0,3}\.[0-9]{0,3}\.[1-9]{0,3}'

Ya adresse 192.168.0.1?
Avinash Raj

1

Sistemdeki bir web tarayıcısına erişiminiz varsa http://whatsmyrouterip.com/ adresine gidebilirsiniz ve ip'inizi herhangi bir komut kullanmadan bulabilmesi gerekir.

Aksi taktirde terminalin açılması ve ip route | grep defaultyapılması yeterli olacaktır. Ağ arayüzlerinize bağlı olarak birden fazla verebilir tho.


0

Bunu oldukça sık kullanıyorum ve hatırlaması kolay:

route | grep default | awk '{print $2}'

0
hostname  -I

190.200.200.107 172.21.0.1 172.17.0.1 172.19.0.1 172.18.0.1

Sadece IP sorunu almak için

hostname -I | cut -d' ' -f1 

190.200.200.107

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.