Я хочу иметь ярлык для отображения адаптера, IP-адреса и Mac-адреса. У меня есть следующее:
#! /bin/bash
for iface in $(ifconfig | grep -v "lo" | cut -d ' ' -f1| tr '\n' ' ')
do
ipadd=$(ip -o -4 addr list $iface | awk '{print $4}' | cut -d/ -f1)
madd=$(ip -o link list $iface | awk '{print $17}')
printf "$iface\t$ipadd\t$madd\n"
done
Сетевой адаптер не показывает IP-адрес и не отображает такое устройство. Но если я запускаю команду вручную в bash, она работает и появляется. Тот же скрипт работает правильно на моем Ubuntu, но не на Raspberry Pi (работает только ручная команда). wlan0 работает без проблем на Pi
MAC-адрес вообще не работает, но если я запускаю команду вручную ip -o link list <adapter> | awk '{print $17}')
, он правильно показывает MAC-адрес.
Пожалуйста, сообщите, где могла произойти ошибка.
Обновление:
+++ ifconfig
+++ grep -v lo
+++ cut -d ' ' -f1
+++ tr '\n' ' '
++ for iface in $(ifconfig | grep -v "lo" | cut -d ' ' -f1| tr '\n' ' ')
+++ ip -o -4 addr list enxb827ebe7229c:
+++ awk '{print $4}'
+++ cut -d/ -f1
Device "enxb827ebe7229c:" does not exist.
++ ipadd=
+++ ip -o -4 link list enxb827ebe7229c:
+++ awk '{print $17}'
Device "enxb827ebe7229c:" does not exist.
++ madd=
++ printf 'enxb827ebe7229c:\t\t\n'
enxb827ebe7229c:
++ for iface in $(ifconfig | grep -v "lo" | cut -d ' ' -f1| tr '\n' ' ')
+++ ip -o -4 addr list wlan0:
+++ awk '{print $4}'
+++ cut -d/ -f1
++ ipadd=192.168.1.4
+++ ip -o -4 link list wlan0:
+++ awk '{print $17}'
RTNETLINK answers: No such device
Cannot send link get request: No such device
++ madd=
++ printf 'wlan0:\t192.168.1.4\t\n'
wlan0: 192.168.1.4
Если я запускаю команду вручную:
ip -o -4 link list enxb827ebe7229c | awk '{print $17}'
Iполучить Mac-адрес
Если я запусту этот
ip -o addr list enxb827ebe7229c | awk '{print $4}' | cut -d/ -f1
, я тоже получу IP-адрес правильно