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)
# ip r list match 0.0.0.0/0 | awk '{print $3}'

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

anonymous
()

Вопрос к знатокам - а в /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 ☕☕☕☕☕
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.