Есть много вопросов, которые нужно ответить, когда речь заходит о конфигурации сетевого интерфейса, связанной с физическим образом, которая имеет несколько интерфейсов для индивидуального использования.
. Какая карта активна? Анкет Это часть связи? Анкет Какой у него MAC -адрес? Анкет Каков его постоянный Mac, если часть связи? Анкет Какова скорость устройства и каково его состояние сейчас? Анкет Какой весь IP -адрес он сейчас удерживает?
В то время как ifconfig предоставляет вам некоторую информацию, новая команда «IP» делает это намного лучше, но у вас нет всех представлений. Затем вы в конечном итоге просматриваете некоторые другие файлы/файлы конфигурации/файлы устройства для дальнейшей карты информации.
Попробуйте, просто скопируйте и запустите.
Чтобы сделать это простым и портативным, для администраторов, я сделал это в своем фавообразовании программирования.
Образец вывода
#awk -f Netinfo.awk Filter IPV4(-4) : No ______________________________________________________________________________________________________________ Device Name Bond Mac Mac(perm) State IP/Net ______________________________________________________________________________________________________________ / lo UNKNOWN() 127.0.0.1/8 02:01 eno1 bond0 92:6a:64:43:d5:c1 92:6a:64:43:d5:c1 UP(10G) 02:02 eno2 bond0 92:6a:64:43:d5:c1 92:6a:64:43:d5:c5 UP(10G) 02:03 eno3 92:6a:64:12:d3:12 DOWN(10G) 192.168.0.11/24,fdb4:a9d0:15e6:a052::/64 bond0 92:6a:64:12:d3:13 192.168.0.12/24,192.168.0.20/24 _____________________________________________________________________________________________________________
Код QuickView
#!/usr/bin/awk -f #Code On Github: https://github.com/vkg23/Netinfo.awk #VipinkG/Vkg23/awk/LinuxNetinfoMapper Netinfo.awk Version:5 #About Compatiblities/Procedures and RoadMaps : Refer to Github Page function checkFile(filename) { if( system( "test -f "filename) == 0 ) {return 0} else {return 1} } function foo() { if(intname!~/bond/) { devfile="/sys/class/net/"intname"/device" cmdsub="ls -l "devfile " 2> /dev/null" cmdsub|getline devlink close(cmdsub) split(devlink,tmp,"/"); a1[intname,"pci"]="/"tmp[length(tmp)] speedfile="/sys/class/net/"intname"/speed" if ((getline speed < speedfile) > 0) { speed=speed/1000 a1[intname,"speed"]=speed"G"; } else {} } } BEGIN { id=0 if (checkFile("/usr/sbin/ip") == 0) {ipcmd="/usr/sbin/ip" } else if (checkFile("/sbin/ip") == 0) {ipcmd="/sbin/ip"} else {print " Error! IP Command not found [/usr/sbin/ip or /sbin/ip], Check if \"iproute\" rpm exists?" ; exit} cmd=ipcmd" -o link show" ; while ((cmd|getline) > 0){ intname=$2 id++ gsub(/:$/,"",intname) intArray[id]=intname; a1[intname,"name"]=intname; a1[intname,"ip"]; foo() if(intname!~/bond/) {if ($0~/bond[0-9]*/) { #print "Part of Bond, So reading slave perm address." ethfile="/sys/class/net/"intname"/bonding_slave/perm_hwaddr" getline pmac < ethfile a1[intname,"pmac"]=pmac; } } for (i=3;i<=NF;i++){ if($i~/link\/ether/){a1[intname,"mac"]=$(i+1) } if($i~/state/){a1[intname,"state"]=$(i+1); } if($i~/bond[0-9]*/){ a1[intname,"bond"]=$(i); } } } close(cmd) if (ARGV[1]=="-4") { print "Filter ipv4(-4):","Yes" cmd=ipcmd" -o -4 addr show" } else { print "Filter ipv4(-4):","No" cmd=ipcmd" -o addr show" ; } while ((cmd|getline) > 0){ intname=$2 gsub(/:$/,"",intname) if ($3~/inet/) { if (a1[intname,"ip"]==""){ a1[intname,"ip"]=$(4) } else { a1[intname,"ip"]=a1[intname,"ip"]","$(4) } } } close(cmd) print "____________________________________________________________________________________________________________________" printf "%15s\t%6s\t%5s\t%20s\t%20s\t%10s\t%18s\n","Device","Name","Bond","Mac","Mac(perm)","State","Ip/Net" print "____________________________________________________________________________________________________________________" for (x=1;x<=length(intArray);x++) { i=intArray[x] state=a1[i,"state"]"("a1[i,"speed"]")" printf "%15s\t%6s\t%5s\t%20s\t%20s\t%10s\t%18s\n",a1[i,"pci"],a1[i,"name"],a1[i,"bond"],a1[i,"mac"],a1[i,"pmac"],state,a1[i,"ip"] } print "_____________________________________________________________________________________________________________________" print "Press Enter to Exit!" exit } {print "Done!"; exit 0} END{} #End of Code
Кодовая нагрузка/вилка
Обратитесь к моей странице GitHub для получения более подробной информации. Ссылка Github/vkg23/netinfo.awk
Проверено на версии RHEL/CentOS 6/7/8.
Надеюсь, это поможет сообществу Linux.
Изображение обложки: unsplash/@__ ithflores
Оригинал: «https://dev.to/vkg23/linux-network-interface-configuration-mapper-41»