2016-10-04 9 views
0

Моя машина имеет несколько сетевых устройств, таких как eth0, eth1 и т. Д. Один из этих IP будет иметь IP-адрес в диапазоне 192.168.x.x. Как получить имя устройства с помощью сценария оболочки? (Желательно с использованием ip команд, а не ifconfig)Shell Script: Получить имя от маски подсети

Как

eth0 192.168.2.3 или eth3 192.168.5.6

ответ

0

вы можете попробовать это;

ip -o -4 a | awk '$2 ~ "eth" { gsub(/\/.*/, "", $4); print $2" "$4}' 

для всех интерфейсов;

ip -o -4 a | awk ' { gsub(/\/.*/, "", $4); print $2" "$4}' 

например:

[email protected]:/tmp/$ ip -o -4 a | awk ' { gsub(/\/.*/, "", $4); print $2" "$4}' 
lo 127.0.0.1 
eth0 x.x.x.x 
docker0 x.x.x.x 

[email protected]:/tmp/$ ip -o -4 a | awk '$2 ~ "eth" { gsub(/\/.*/, "", $4); print $2" "$4}' 
eth0 x.x.x.x 

человек ф сказал:

-o, -oneline выход каждая запись на отдельной строке, заменяя перевод строки с символом '\'. Это удобно, если вы хотите, чтобы отсчитывал записи с помощью wc (1) или grep (1) вывода.

-4: Только показать TCP/IP IPv4