Страница 1 из 1

Парсим netstat -rn (FreeBSD)

Добавлено: 2009-10-18 14:01:44
thefree

Код: Выделить всё

/home/free>netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use  Netif Expire
default            192.168.105.1      UGS         0        2    sk0
127.0.0.1          127.0.0.1          UH          0        0    lo0
192.168.9.0/24     192.168.105.254    UGS         0        0    sk0
192.168.10.0/24    192.168.105.254    UGS         0        0    sk0
192.168.11.0/24    192.168.105.254    UGS         0        0    sk0
192.168.12.0/24    192.168.105.254    UGS         0        0    sk0
192.168.13.0/24    192.168.105.254    UGS         0        0    sk0
192.168.14.0/24    192.168.105.254    UGS         0        0    sk0
192.168.15.0/24    192.168.105.254    UGS         0       80    sk0
192.168.18.0/24    192.168.105.254    UGS         0        0    sk0
192.168.105.0/24   link#1             UC          0        0    sk0
192.168.105.1      00:1b:0c:b4:b5:b0  UHLW        2        0    sk0   1131
192.168.105.254    00:04:75:9f:4f:52  UHLW        9        0    sk0   1185

Internet6:
Destination                       Gateway                       Flags      Netif Expire
::1                               ::1                           UHL         lo0
fe80::%lo0/64                     fe80::1%lo0                   U           lo0
fe80::1%lo0                       link#3                        UHL         lo0
ff01:3::/32                       fe80::1%lo0                   UC          lo0
ff02::%lo0/32                     fe80::1%lo0                   UC          lo0
Надо получить значение 192.168.105.1 шлюза по умолчанию.

Разбираю вот так

Код: Выделить всё

netstat -rn | grep default | awk '{print($2)}'
Результат тот что мне нужен, но в sh не сильно разбираюсь поэтому спрашиваю правильно ли сделано? и как оптимизировать ?

Re: Парсим netstat -rn (FreeBSD)

Добавлено: 2009-10-19 6:28:16
Гость
thefree писал(а):и как оптимизировать ?
можно выкинуть grep

Код: Выделить всё

netstat -rn | awk '/default/ { print $2 }'
и awk

Код: Выделить всё

netstat -rn |
while read dest gate rest; do
    case $dest in
        default ) echo $gate
    esac
done