Может ли кто-нибудь получить IP-адрес по умолчанию, используя только команды netstat -rn, while, read и cut?

Для zsh необходимо установить параметры EXTENDED_GLOB.

Чтобы узнать, были ли они установлены, запустите setoptдля отображения установленных параметров:

$ setopt | grep glob
extendedglob

Если он не установлен, запустите setopt extended_glob.

ПРИМЕЧАНИЕ. :это приведет к тому, что ~, ^и #не будут расширены.


Проблема в моем случае заключалась в том, что, хотя я установил эту опцию в оболочке, я запускал цикл for в сценарии. Сценарий запускает собственную оболочку для запуска, поэтому для него не установлен этот параметр.

Чтобы исправить эту конкретную проблему, поместите setopt extendedglobв сам скрипт.

-1
19.03.2021, 11:33
3 ответа

Почему нельзя использовать awk и sed?

Вот еще одно решение:

grep ^0.0.0.0 | tr -s " " | cut -f2 -d" "

Опция -sпревращает цепочки пробелов в один пробел.

0
28.04.2021, 22:59

Не уверен, что понимаю, но это?

# netstat -rn
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 enp0s25
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 wlp3s0
172.17.0.0      0.0.0.0         255.255.0.0     U         0 0          0 docker0
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 enp0s25
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlp3s0
192.168.100.0   0.0.0.0         255.255.255.0   U         0 0          0 virbr1
192.168.122.0   0.0.0.0         255.255.255.0   U         0 0          0 virbr0

# netstat -rn | while read dest gw rest ; do [[ "${dest}" == "0.0.0.0" ]] && echo "${gw}" ; done
192.168.1.1
192.168.1.1
2
28.04.2021, 22:59

Используя только netstat и оболочку, вы можете сделать

set -- $(netstat -rn)
shift 13
echo $1

но это немного хрупко.

x=$(netstat -rn | while read a b rest ; do [ a = "0.0.0.0" ] || continue ; echo $b ; break ; done )

более надежен, но явно длиннее.

0
28.04.2021, 22:59

Теги

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