Печать интерфейса-ipaddress с помощью одной команды (по каналам)

ifconfig дает следующий результат:

eth0 Link encap:Ethernet HWaddr 4c:87:0e:z3:e7:11 UP BROADCAST MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:35767 errors:0 dropped:0 overruns:0 frame:0 TX packets:35767 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:5053027 (5.0 MB) TX bytes:5053027 (5.0 MB) vmnet1 Link encap:Ethernet HWaddr 60:80:66:m0:00:01 inet addr:192.168.139.1 Bcast:192.168.139.255 Mask:255.255.255.0 inet6 addr: fe80::250:56ff:fec0:1/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:70 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) 

Мне сейчас нужен вывод, как

 eth0 wlan0 127.0.0.1 vmnet1 192.168.139.1 

поэтому я запускаю команду

 ifconfig | awk '/encap|inet addr/{ print }' 

но я застрял сейчас, так как мне нужно объединить 2 строки в зависимости от погоды, следующая строка содержит шаблон ipaddress. Хотя скрипт оболочки может сделать трюк, но мне нужно просто одно командное решение. Любая помощь будет оценена. Хотя для циклов есть awk, но вперед, глядя в следующую строку, сопоставление, а затем печать на консоли – вызов для меня.

или существует простая команда / флаг для достижения такой цели?

команда маршрута, похоже, выполняет трюк (извлечение awk-поля !!), но в нем не перечисляются неактивные интерфейсы.

  • Как я могу вручную сбросить счетчики RX / TX в выход ifconfig без влияния на доставку данных?
  • При входе в систему Linux я могу найти ip-адреса, которые можно использовать для подключения к машине через ssh?
  • Форматирование ifconfig с помощью sed / awk
  • Не удалось разрешить IP-адрес для eth1 в Vagrant VM
  • команда ifconfig, отображающая внутренний IP-адрес
  • Как установить шлюз по умолчанию
  • Найти тип маршрутизатора
  • сетевая маска по умолчанию в Solaris
  • 4 Solutions collect form web for “Печать интерфейса-ipaddress с помощью одной команды (по каналам)”

    наконец нашел решение на основе ifconfig!

     String s="ifconfig | awk -F '[ :]' '/encap|inet addr/{ if($1 != \"\" ){ print $1 \":\" $13 } else print $13 }'| awk -F \":\" '{print $1}'| awk '{ curr=$1 ; if(!system(\"echo \"$1\"|grep ^[0-9]>/dev/null\")) {print prev \"\\t : \" curr;prev=\"\"} else { if(prev!=\"\") {print prev \"\\t : not assigned\" }; prev=$1 } }'" 

    объяснение:

     root$ ifconfig | awk -F '[ :]' '/encap|inet addr/{ if($1 != "" ){ print $1 ":" $13 } else print $13 }'| awk -F ":" '{print $1}' eth0 lo 127.0.0.1 vmnet1 192.168.139.1 vmnet8 192.168.152.1 wlan0 10.208.7.86 

    поэтому, я передал вышеприведенный вывод в другую команду awk:

     | awk '{ curr=$1 ; if(!system("echo "$1"|grep ^[0-9]>/dev/null")) {print prev "\t : " curr;prev=""} else { if(prev!="") {print prev "\t : not assigned" }; prev=$1 } }' 

    здесь, если я нахожу два последовательных имени интерфейса, тогда я печатаю имя предыдущего интерфейса с пользовательским сообщением « не назначено » .if Я получаю числовой шаблон в строке, тогда печатается текущая строка (ipaddress) вместе с предыдущим именем интерфейса!

    Если вы используете GNU / Linux:

     for DEV in /sys/class/net/*; do printf "%-10s %s\n" ${DEV##*/} $(ip addr show ${DEV##*/} | \ sed -rne '/inet/s:\s+inet\s+([0-9.]+).*:\1:gp'); done 

    или if ifconfig – это требование:

     for DEV in /sys/class/net/*; do printf "%-10s %s\n" ${DEV##*/} $(ifconfig ${DEV##*/} | \ sed -rne '/inet adr/s/\s+inet adr:([0-9.]+).*/\1/gp'); done 

    это дает

     eth0 192.168.10.34 eth1 lo 127.0.0.1 ... 

    Требуется iproute2 .

    ifconfig -a | awk '/ Link / {n = $ 1} / addr / {print n, substr ($ 2, index ($ 2, ":") + 1))}'

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

    Другая возможность с помощью ifconfig и awk . Должен работать и для интерфейсов с интерфейсом aliased (eth0: 1) и vlan (eth0.1):

     ifconfig | awk 'BEGIN {RS="\n\n"; } { if ($7 != "addr:") {print $1,$7} }' 

    Параметр RS в awk является разделителем записи, и мы устанавливаем его на две строки. Это заставляет awk объединять всю информацию об каждом интерфейсе в одну строку. Я также подавляю интерфейсы печати, у которых нет настроенного IPv4-адреса.

    Я использую эту команду, чтобы показать для каждого интерфейса свой IP-адрес, а также его разрешенное имя хоста:

     ifconfig | awk 'BEGIN {RS="\n\n"; } { if ($7 != "addr:") {print $1,$7} }' | sed 's/addr://g' | while read iface ip; do echo $iface $ip $(getent hosts | awk '/^'$ip'/ {print $2}'); done 

    Результат выглядит так:

     bond0 10.126.226.102 deh137.abc.biz. bond0:1 10.126.227.10 aeudi64.abc.biz. bond0:7 10.126.226.141 rtlci22.abc.biz. bond1.625 10.126.216.142 bond1.654 10.126.228.102 deh137s.abc.biz. 

    EDIT: Обновлена ​​последняя команда для работы как с DNS, так и с разрешениями на / etc / hosts.

    Interesting Posts

    Снизьте ядро ​​XUbuntu

    Сценарий оболочки, выполняемый с cron, приводит к разному размеру файла, чем выполняется вручную

    не может получить доступ к скрытой панели LXDE

    Как можно создать «инсталлятор» в Linux?

    debian wheezy переключается с внутреннего на внешний монитор после проприетарной установки AMD

    Tar – преобразование stdin без извлечения

    Тип файла и разыменование при указании каталога с помощью команды LS

    Почему не удается выполнить поиск содержимого текстового файла, закодированного в UTF-16?

    ACL не включен, но он работает

    Linux mint 18 Ошибка 64-разрядного сеанса

    Всегда ли сценарий инициализации возвращает правильный код выхода при запуске состояния?

    Установка системы Ubuntu 12.04 c ++

    Скрипт, создающий оконные окна, неожиданно ждет закрытия каждого окна перед тем, как открыть следующий

    Почему архитектура упоминается трижды в uname -a?

    Инструмент для сравнения визуальных каталогов

    Linux и Unix - лучшая ОС в мире.