Какую команду можно запустить, чтобы получить только IP-адрес моего маршрутизатора?
С помощью этой команды у меня должен быть только IP-адрес моего маршрутизатора, а не, например, вся таблица маршрутизации (как при запуске route -n
).
Какую команду можно запустить, чтобы получить только IP-адрес моего маршрутизатора?
С помощью этой команды у меня должен быть только IP-адрес моего маршрутизатора, а не, например, вся таблица маршрутизации (как при запуске route -n
).
Однострочники:
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 в комментариях. Как вы можете видеть, здесь ничего особенного не сделано, и все испытание здесь - всего лишь упражнение в использовании инструментов редактирования вывода, таких как 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
, которое использует таблицу маршрутизации ядра, аналогично 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}'
nm-tool | grep -oP '(?i)gateway:\s*\K\S+'
eth0
иwlan0
, оба активно подключенными, но с настроенным только шлюзомwlan0
,nm-tool | grep -i gateway | xargs echo | cut -d' ' -f2
выходы просто0.0.0.0
.nm-tool | grep -oP '(?i)gateway:\s*\K\S+'
выводит две строки: с0.0.0.0
последующим192.168.1.1
. (То, какip route ...
иroute -n ...
что происходит192.168.1.1
, справедливо , что я считаю наиболее желательным результатом.)network-manager
например, с помощьюifupdown
илиifconfig
.. в этих случаяхnm-tool
не будет получен желаемый результат .. Короче говоря, этот ответ зависит исключительно от сети, управляемойnetwork-manager
..Вы можете найти это многими способами
Лучший вопрос, что или как вы хотите сформировать на выходе?
Из комментариев - (спасибо Avinash Raj 0
источник
uniq
что простоtracepath -m 1 8.8.8.8 | awk '/1:/ {print $2;exit}'
5in.tracepath
поддерживается-m
в некоторых версиях Ubuntu, но не в других .Как вы обычно используете
route -n
, вы можете попробовать этоsed
решение в сочетании сroute -n
:Вот тест:
Другой способ будет использовать
grep
:Как указал @AvinashRaj, это можно сделать только с помощью
grep
(не нужно сжимать пробелы с помощьюtr
):источник
tr
, только grep сделает свою работуroute -n | grep -Po "0\.0\.0\.0 \s*\K\S+(?=\s*0\.0\.0\.0)"
Я использую это довольно часто:
источник
192.168.0.1
?Если у вас есть доступ к веб-браузеру в системе, вы можете перейти по адресу http://whatsmyrouterip.com/, и он сможет найти ваш ip без какой-либо команды.
В противном случае достаточно просто открыть терминал и сделать это
ip route | grep default
. Это может дать более одного в зависимости от ваших сетевых интерфейсов.источник
Я использую это довольно часто и легко запомнить:
источник
190.200.200.107 172.21.0.1 172.17.0.1 172.19.0.1 172.18.0.1
таким образом, чтобы получить только вопрос IP
190.200.200.107
источник