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

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

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

22
задан 5 April 2015 в 07:17

7 ответов

Остроты:

  • 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}' Примечание: работы, только если Ваша машина является единственной в сети
  • ip route show | grep -i 'default via'| awk '{print $3 }'

вывод: 192.168.0.1 для меня

Примечание:

Для 15,04 и позже, существует нет nm-tool , так использование nmcli dev show <IFACE>. Например,

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

Редактирования и дополнительная информация

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

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

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

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

  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

И вот способ отключить Вашу желаемую информацию: netstat -nr | awk '$1 == "0.0.0.0"{print$2}'

Другой, нейтральный также: arp -n | awk '{print $1}'

22
ответ дан 5 April 2015 в 07:17

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

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

Вот тест:

$ 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

Иначе должен был бы использовать grep:

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

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

route -n | grep -Po "0\.0\.0\.0\s*\K\S+(?=\s*0\.0\.0\.0)"
192.168.1.1
5
ответ дан 5 April 2015 в 07:17

Можно ли найти его многими путями

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}'
7
ответ дан 5 April 2015 в 07:17

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

route -n | awk '{ print $2 }' | grep -Eo '[1-9]{0,3}\.[1-9]{0,3}\.[0-9]{0,3}\.[1-9]{0,3}'
1
ответ дан 5 April 2015 в 07:17

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

route | grep default | awk '{print $2}'
0
ответ дан 23 November 2019 в 01:35
hostname  -I

190.200.200.107 172.21.0.1 172.17.0.1 172.19.0.1 172.18.0.1

таким образом получить только проблему IP

hostname -I | cut -d' ' -f1 

190.200.200.107

0
ответ дан 23 November 2019 в 01:35

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

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

1
ответ дан 23 November 2019 в 01:35

Другие вопросы по тегам:

Похожие вопросы: