脚本功能:
编写一根脚本实现执行脚本自动获取网卡的网络配置信息,直观显示查看,当我们有大批量的服务器需要维护时候可以通过此脚本收集多数服务器的IP地址信息
执行结果:
root@cyt:~# bash ip_list.sh
enp0s25:
ipaddress=
broadcast=
netmask=
========================================================
virbr0:
ipaddress=192.168.122.1
broadcast=192.168.122.255
netmask=255.255.255.0
========================================================
virbr1:
ipaddress=192.168.100.1
broadcast=192.168.100.255
netmask=255.255.255.0
========================================================
vnet0:
ipaddress=
broadcast=
netmask=
========================================================
vnet1:
ipaddress=
broadcast=
netmask=
========================================================
vnet2:
ipaddress=
broadcast=
netmask=
========================================================
wlp3s0:
ipaddress=192.168.0.110
broadcast=192.168.0.255
netmask=255.255.255.0
========================================================
代码展示:
#!/bin/bash # # 收集系统内部所有网卡的ip信息 # v1.0 by ytchen5 2021年2月24日 device=(`ifconfig | grep -v "^$"| grep -v ^[[:space:]] | grep -v lo | awk -F: '{print $1}'`) count=$((${#device[*]}-1)) for a in `seq 0 $count` do echo "${device[$a]}:" ip_data=(`ifconfig ${device[$a]} | grep -E -o "[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}"`) for i in `seq 0 ${#ip_data[*]}` do if [[ ! "${ip_data[$i]}" =~ [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.255 ]];then continue else broadcast=${ip_data[$i]} fi done for j in `seq 0 ${#ip_data[*]}` do if [[ ! "${ip_data[$j]}" =~ [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.0 ]];then continue else netmask=${ip_data[$j]} fi done for x in `seq 0 ${#ip_data[*]}` do if [[ ! "${ip_data[$x]}" =~ [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.255 ]] && [[ ! "${ip_data[$x]}" =~ [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.0 ]];then ipaddress=${ip_data[$x]} break else continue fi done echo "ipaddress=$ipaddress" echo "broadcast=$broadcast" echo "netmask=$netmask" unset ipaddress unset broadcast unset netmask echo "========================================================" done
验证获取内容是否正确