Налицо непонимание сущностей. Имена интерфейсов делаются без спец символов именно потому, чтобы не создавать неудобств при их обработки из скриптов. Своим экранированием вы эти сущности и умножаете.
А если ещё немного занудно поворчать, то отсуствие у ipconfig или у ip addr отдельного ключа, показывающего первый (и отдельным - все) адрес на интерфейсе в нужном протоколе (4/6) - давнее отсутствие сущности, которое многих раздражает, но ничего не меняется.
Как следствие, вышепреведеный скрипт ничего путного и не даёт.
Просто мысль, что если смотреть интересующие параметры в /sys/class/net - вот конкретно там список активных интерфейсов виден, включая алиасы (или как это зовется).
Имена интерфейсов делаются без спец символов именно потому, чтобы не создавать неудобств при их обработки из скриптов.
Вообще не понял. Перефразируйте, пожалуйста.
Своим экранированием вы эти сущности и умножаете.
Ой-ой? То есть есть избавление от оговорки «кроме присвоения» — это у нас умножение сущностей?
А если ещё немного занудно поворчать, то отсуствие у ipconfig ipconfig
ifconfig, вы хотели сказать? Ее вывод в принципе не предназначен для машинного разбора.
или у ip addr отдельного ключа, показывающего первый (и отдельным - все) адрес на интерфейсе в нужном протоколе (4/6) - давнее отсутствие сущности, которое многих раздражает, но ничего не меняется
А что, оно при следующем показе их перемешает случайно? И вообще удобства такого не понимаю. Ни src-рутинг, ни даже ping -I не сделаешь. Оно хоть поменять адрес даст атомарно?
Чтобы сделать eth0:1 down или поменять (атомарно!) маску и т п.
src тут причем?
Есть такая маршутизация :) src там у пакетов.
И вообще, к обсуждаемому вопросу это всё отношение не имеет. Если у интерфейса так уж сделали всем назло несколько адресов без алиасов, значить вот все и надо выводить как один. А у алиасов - отдельно. Но ведь нет же. Смысл время терять целый день доказывая что-то совсем перпендикулярное?
я в курсе. Как это связано с «маршрутизация - это в какой интерфейс отправлять»?
Если у интерфейса так уж сделали всем назло несколько адресов без алиасов, значить вот все и надо выводить как один. А у алиасов - отдельно. Но ведь нет же.
тут какая штука: весьма давно (еще с бородатых времен 2.Х) алиасов как бы и нет там внутри. Теперь это label для адреса. В целях совместимости до сих пор тянется работа с метками вида «интерфейс:число» как со старыми алиасами. По меткам адреса выводить можно
arkhnchul@tween-arkhost:~$ ip a l dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 74:d4:35:5c:6c:0c brd ff:ff:ff:ff:ff:ff
inet 192.168.2.238/24 brd 192.168.2.255 scope global eth0
valid_lft forever preferred_lft forever
inet 192.168.44.55/24 scope global eth0
valid_lft forever preferred_lft forever
inet 192.168.45.55/24 brd 192.168.45.255 scope global eth0:1
valid_lft forever preferred_lft forever
inet6 fe80::76d4:35ff:fe5c:6c0c/64 scope link
valid_lft forever preferred_lft forever
arkhnchul@tween-arkhost:~$ ip a l label eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 74:d4:35:5c:6c:0c brd ff:ff:ff:ff:ff:ff
inet 192.168.2.238/24 brd 192.168.2.255 scope global eth0
valid_lft forever preferred_lft forever
inet 192.168.44.55/24 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::76d4:35ff:fe5c:6c0c/64 scope link
valid_lft forever preferred_lft forever
arkhnchul@tween-arkhost:~$ ip a l label eth0:1
inet 192.168.45.55/24 brd 192.168.45.255 scope global eth0:1
valid_lft forever preferred_lft forever
Как это связано с «маршрутизация - это в какой интерфейс отправлять»?
Я говорил об организации source-рутинга, например, при двух uplink. Тогда можно биндить некоторые программы на интерфейс. Так как адреса могут меняться, скажем динамически, а интерфейсы в конфигурации будут меняться крайне редко. Потому это удобно, один интерфейс, пусть и виртуальный - один адрес.
тут какая штука: весьма давно
Боже, да при чём тут это всё?! Речь была вообще о том, что у команд нет тривиального ключика для ifconfig и опции для команды ip, чтобы оно вывело на стандартный вывод адреса с этим именем интерфейса. Это скорее всего и надо ТСу. Для нескольких адресов и алиасов как оно должно выводить - обсуждаемо и дело десятое.
Что «И?» Версия типа одна и та же (хотя между дистрибутивами чуть ли не десяток лет), выводит разное, интерфейс указан, а интересует всех обычно ipv4-адрес :) В данном случае меня ничего не интересовало, просто проверил и очередной раз ужаснулся, нафига так сделали. Ладно было б возможно из /proc(sys) где вынуть...
Я говорил об организации source-рутинга, например, при двух uplink
source policy routing вполне себе делается на уровне адресов
один интерфейс, пусть и виртуальный - один адрес
виртуальных интерфейсов есть на выбор. Для описываемого случая, когда нужен именно интерфейс - macvlan, у него и MAC свой будет.
Боже, да при чём тут это всё?!
дыг разговор зашел про алиасы, множества адресов и «какого хрена».
Речь была вообще о том, что у команд нет тривиального ключика для ifconfig и опции для команды ip, чтобы оно вывело на стандартный вывод адреса с этим именем интерфейса
еще ключика для маски, ключика для состояния линка, ключика для MAC-а, ключика для MTU... правильно понимаю? Для парсинга есть -o
source policy routing вполне себе делается на уровне адресов
Вы достали уже, тупо долбите какие-то прямолинейные мысли, скипая объяснения, почему собственно были такие примеры. Вы русский язык понимаете? Знаете значение слова «удобнее»?
еще ключика для маски, ключика для состояния линка, ключика для MAC-а, ключика для MTU... правильно понимаю?
Правильно. Есть куча утилит с таким же подходом. Скажем - date. Показывает по умолчанию в человекочитаемом виде, но имеет опцию для задания формата, если вас интересует только количество секунд (и не важно, что это с точки зрения текущего времени бессмысленно), то это можно отдельно заказать на вывод. Такой подход самый правильный, так как позволяет не забивать навсегда гвоздями формат: адрес находится в четвертом поле причём 3 поле отделено табуляцией. Ну дурдом же.