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

Программирование на sh, быть может немного про альтернативные языки
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
thefree
лейтенант
Сообщения: 980
Зарегистрирован: 2008-12-29 9:23:19
Откуда: Весёлая Страна

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

Непрочитанное сообщение thefree » 2009-10-18 14:01:44

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

/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 не сильно разбираюсь поэтому спрашиваю правильно ли сделано? и как оптимизировать ?
Не судите меня строго, Я не волшебник, а только учусь!
http://planetbsd.ru - RSS-агрегатор *BSD по Рунету

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Гость
проходил мимо

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