Чтобы получить список связанных IP-адресов, вы можете использовать команду netstat
netstat -rn
Это дает длинный список IP-адресов, и нелегко найти нужное поле. Результат образца следующий:
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.195.1 UGSc 17 0 en2
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 1 254107 lo0
169.254 link#7 UCS 0 0 en2
192.168.195 link#7 UCS 3 0 en2
192.168.195.1 0:27:22:67:35:ee UHLWIi 22 397 en2 1193
192.168.195.5 127.0.0.1 UHS 0 0 lo0
More result is truncated.......
IP-адрес шлюза находится в первой строке; один со значением по умолчанию в первом столбце.
Чтобы отображать только выбранные строки результата, мы можем использовать команду grep вместе с netstat
netstat -rn | grep 'default'
Эта команда фильтрует и отображает те строки результатов, которые имеют значение по умолчанию. В этом случае вы можете увидеть следующий результат:
default 192.168.195.1 UGSc 14 0 en2
Если вы хотите найти только IP-адрес шлюза и ничего больше, вы можете дополнительно отфильтровать результат с помощью awk . Команда awk соответствует шаблону во входном результате и отображает результат. Это может быть полезно, когда вы используете свой результат непосредственно в какой-либо программе или пакетном задании.
netstat -rn | grep 'default' | awk '{print $2}'
Команда awk указывает сопоставить и распечатать второй столбец результата в тексте. Таким образом, окончательный результат выглядит так:
192.168.195.1
В этом случае netstat отображает весь результат, grep выбирает только строку со словом «default» в нем, а awk далее сопоставляет шаблон для отображения второго столбца в тексте.
Аналогичным образом вы можете использовать команду route -n get default, чтобы получить требуемый результат. Полная команда
route -n get default | grep 'gateway' | awk '{print $2}'
Эти команды хорошо работают в Linux, UNIX и MAC OS.