LINUX.ORG.RU
ФорумAdmin

Как узнать шлюз интерфейса? BASH

 ,


0

1

Подскажите люди добрые, каким кодом можно вывести на табло в терминале эту чудную информацию? )))

Задача на деле такая, нужно в переменные загнать значения шлюза, нетмаск и ип адрес...

с ип адресом задача решена таким образом:

IP="`ip addr list eth0 | grep "  inet " | head -n 1 | cut -d " " -f 6 | cut -d / -f 1`"

теперь надо определить шлюз, и нетмаск в виде 192.168.0.0/24 Но вот познаний в Линукс терминале мало ( Выручайте.



Последнее исправление: Ph3nix (всего исправлений: 1)

Правда не bash

ip r | awk '/default/{print$3}'

uspen ★★★★★
()
Последнее исправление: uspen (всего исправлений: 1)
# ip r list match 0.0.0.0/0 | awk '{print $3}'

но дефолтных маршрутов может быть несколько

anonymous
()

с ип адресом

так короче

ip -o -4 a l eth0 | cut -d " " -f 7 | cut -d / -f 1
ip -o -4 a l eth0 | awk '{print ($4)}' | cut -d / -f 1

sin_a ★★★★★
()

Вопрос к знатокам - а в /proc нигде нет файлов с ip и прочей инфой?

alozovskoy ★★★★★
()

с ип адресом задача решена таким образом: (someshit)

На интерфейсе может быть (и часто бывает) более одного ip-адреса.

шлюз интерфейса?

Что такое «шлюз интерфейса»? Тебя интересует default gateway? Если да - то их тоже может быть больше одного (с разной метрикой).

nbw ★★★
()
Ответ на: комментарий от sin_a

Спасибо, помог!!! Слепил вроде ) Топорно, но под мои нужды сойдёт!

Ph3nix
() автор топика
Ответ на: комментарий от nbw

Да, нужен дефолтный, понятно что может быть несколько, я спрашивал по поводу как узнать его на определённом интерфейсе с условием что он там один, мне скрипт для своих нужд нужен! ) В общем слепил я динозавра, работает вроде, но если есть какие варианты ещё, я не откажусь )

Ph3nix
() автор топика
Ответ на: комментарий от sin_a

ip -o -4 a l eth0 | cut -d " " -f 7 | cut -d / -f 1

Device «eth0» does not exist.

мой вариант

/sbin/route -n | awk '$1=="0.0.0.0" {print $2}'

А вообще смысл трэда непонятен. Таких тем в сети уже тысячи

snaf ★★★★★
()
30 марта 2015 г.

Ребят, сам наткнулся на эту тему, решая аналогичную задачу. Рабочего решения для случаев, когда шлюз показывает ни одна из команд ip route, route -n и ifconfig, здесь так и не предложили, к сожалению. Попробую это исправить.

Объясню человекопонятным языком.

Для одних интерфейсов, ifconfig покажет destionation. Для других интерфейсов, ifconfig покажет broadcast, а вот текущий адрес шлюза - фиг. Подозреваю, что вопрос касался именно таких интерфейсов.

В ситуации, когда к компу подключены 10 usb-модемов (да, блин, 2g-gsm/edge местами рулит :( ) с разными интерфейсами, где для одних есть destination, для других broadcast и необходимо агрегировать все соединения, надо обязательно узнать текущие адреса шлюзов всех интерфейсов, чтобы правильно прописать маршруты.Причем, сделать это нужно динамически, скриптом, чтобы не прописывать и не добавлять кучу маршрутов вручную каждый раз.

Собственно, сразу к результатам углубленного ковыряния данного вопроса, без скучного описания самого процессса.

Адреса сохраняются в кеше ARP, получить их можно так:

arp -i интерфейс
И/или:
ip neigh show dev интерфейс

Ну и получение непосредственно адреса шлюза:

P2=`ip neigh show dev интерфейс | grep -E “REACHABLE|STALE” | awk {’print $1′}`
#теперь $P2 присовено значение в виде IP шлюза интерфейса
echo $P2

Методы получения адресов шлюза для других типов интерфейсов приводились выше - обычно, их можно молучить командами типа ifconfig, ip route и route -n. Меня же, интересовал вопрос о том, как получить адрес шлюза интерфейса, который не отображается командами ifconfig, ip route и route -n и надеюсь, что помог(у) этим сообщением хотябы одному человеку на земле :)

VictorAS
()
28 сентября 2016 г.
Ответ на: комментарий от VictorAS

Подниму тему. И все-таки как вытащить адреса шлюзов, которые выдаются по DHCP на интерфейс. Пример такой. Имеем линукс машину в которую от двух провайдеров воткнуто по аплинку. Оба провайдера выдают адреса по DHCP. Нужно на сервере настроить балансировку трафика в оба канала. Делается это довольно изящно.

 route del default
 ip ro flush cache
 ip ro add default scope global nexthop via ip_gateway_1 dev eth0 weight 50 nexthop via ip_gateway_2 dev eth1 weight 50
Но для этого нужно знать, что выдается по DHCP. Из этого вопрос где, в том же Debian, хранится эта информация? Нужно это для скрипта.

bredis
()
Ответ на: комментарий от bredis

Сразу скажу не Debian, но вроде на него можно накатить dhcpcd, который выдаст например по dhcpcd -T eth0 полную инфу

anc ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.