Как показать (просто) IP-адрес моего роутера?

Какую команду я могу запустить, чтобы получить только IP-адрес моего маршрутизатора?

С помощью этой команды у меня должен быть только IP-адрес моего маршрутизатора, а не, например, вся таблица маршрутизации (как когда я запускаю route -n ).


Однострочные:

  • nm-инструмент | grep -i шлюз | xargs echo | вырезать -d '' -f2
  • nm-tool | grep -i шлюз | awk '{print $ 2}
  • netstat -nr | awk '$ 1 == "0.0.0.0" {print $ 2}'
  • arp -n | awk '{print $ 1}' Примечание: работает, только если ваш компьютер единственный в сети
  • ip route show | grep -i 'по умолчанию через' | awk '{print $ 3}'

output: 192.168.0.1 для меня

ПРИМЕЧАНИЕ :

Для 15.04 и новее не существует nm-tool , поэтому используйте nmcli dev show . Например,

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

Изменения и дополнительная информация

Как вы Как видно из изучения команды, мы берем вывод nm-tool (который, обратите внимание, берет информацию из NetworkManager), находим строку, содержащую слово gateway , печатаем чем информация с эхом (разделенная пробелами), а затем вырезать только второй элемент всего вывода. Обратите внимание, что если у вас есть два или более соединения, вам может потребоваться top remove xargs echo | вырезать -d '' -f2 и заменить его на awk '{print $ 2}' ; другими словами, вся строка будет выглядеть так: nm-tool | grep -i шлюз | awk '{print $ 2}' . В качестве альтернативы вы могли бы использовать nm-tool | grep -oP '(? i) gateway: s * K S +' , как было предложено Авинашем Раджем в комментариях. Как видите, здесь ничего особенного не делается, и все это испытание — это просто упражнение в использовании инструментов редактирования вывода, таких как cut, awk и grep.

Другой метод получения информации о шлюзе. осуществляется через команду nmcli dev list (да, все еще полагается на сетевой менеджер). nmcli — это версия сетевого менеджера для командной строки. Вы можете запустить nmcli dev list | grep -i routers или можно запустить nmcli dev list | grep -i 'gw =' . Опять же, вы можете поупражняться в вырезании всей другой информации, кроме желаемого IP-адреса, если хотите.

Поскольку в исходном вопросе единственной спецификацией было напечатать только шлюз по умолчанию, я здесь я полагаюсь на вывод nm-tool. NetworkManager по умолчанию поставляется с Ubuntu, это стандартный способ управления сетевыми подключениями Ubuntu. Если вы используете что-то другое, например wicd или подключаетесь через wpa_cli, nm-tool не даст вам ответа. В таком случае вы можете найти ответы других людей более полезными..

Более нейтральным к дистрибутивам и конфигурационным параметрам было бы использование netstat -n , который использует таблицу маршрутизации ядра, аналогичную маршрут -n . Результат ниже, ничего удивительного.

  Флаги Genmask шлюза назначения Метрика Ссылка Использовать Iface0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 wlan0192.168.0.0 0.0  .0.0 255.255.255.0 U 9 0 0 wlan0  

А вот способ вырезать нужную информацию: netstat -nr | awk '$ 1 == "0.0.0.0" {print $ 2}'

Еще один, тоже нейтральный: arp -n | awk '{print $ 1}'


Вы можете найти это разными способами

  ip route show default  

Лучше спросите, что или как вы хотите формировать вывод?

  ip route show |  awk '/default/{print $ 3}' tracepath -m 1 8.8.8.8 |  awk '/1:/{print $ 2}' |  uniq  

Из комментариев — (спасибо, Avinash Raj 0

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


Вы можете найти это разными способами

  ip route show default  

Лучше спросите, что или как вы хотите сформировать вывод?

  ip route show | awk '/default/{print $ 3}' tracepath -m 1 8.8.8.8 | awk '/1:/{print $ 2}' | uniq  

Из комментариев — (спасибо, Авинаш Радж 0

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

Как вы обычно используете route -n , вы можете попробовать это решение sed в сочетании с route -n :

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

Здесь это тест:

  $ route -nKernel Таблица IP-маршрутизации  Шлюз Genmask Флаги Метрическая ссылка Использование Iface0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0192.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  

Другой способ — использовать grep :

  $ route -n |  тр-с '' |  grep -Po "(?  

Как указал @AvinashRaj, это можно сделать только с помощью grep (нет необходимости сжимать пробелы с помощью tr ):

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


Поскольку вы обычно используете route -n , вы можете попробовать это sed в сочетании с route -n :

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

Вот тест:

  $ route -nKernel IP-таблица маршрутизации IP-маршрутизации шлюза назначения Genmask Flags Metric  Ссылка Использование Iface0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0192.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  

Другой способ — использовать grep :

  $ route -n |  тр-с '' |  grep -Po "(?  

Как указал @AvinashRaj, это можно сделать только с помощью grep (нет необходимости сжимать пробелы с помощью tr ):

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

Я использую его довольно часто:

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


Я довольно часто использую это:

  маршрут -n |  awk '{print $ 2}' |  grep -Eo '[1-9] {0,3} . [1-9] {0,3} . [0-9] {0,3} . [1-9] {0,3}  ' 

Если у вас есть доступ к веб-браузеру в системе, вы можете перейти на http ://whatsmyrouterip.com/, и он сможет найти ваш IP-адрес без какой-либо команды.

В противном случае просто откройте терминал и выполните ip route | grep default должно быть достаточно. Это может дать больше одного в зависимости от ваших сетевых интерфейсов.


Если у вас есть доступ к веб-браузеру в системе, вы можете перейти на http ://whatsmyrouterip.com/, и он сможет найти ваш ip без какой-либо команды.

В противном случае просто откройте терминал и выполните ip route | grep default должно быть достаточно. Это может дать больше одного, в зависимости от ваших сетевых интерфейсов.


Я использую это довольно часто и легко запомните:

  маршрут |  grep default |  awk '{print $ 2}'  


Я использую это довольно часто, и это легко запомнить:

  маршрут |  grep default |  awk '{print $ 2}'  

Оцените статью
techsly.ru
Добавить комментарий