获取Linux系统网卡IP网关mac等信息shell脚本

shell脚本需求

获取主机有线网卡和无线网卡信息
需要获取一下信息

  • 网卡名称
  • 网卡ip
  • 网卡子网掩码
  • 网卡网关
  • 网卡dns前缀
  • 网卡dns
  • 网卡mac

步骤

  1. 获取主机所有网卡名称
  2. 遍历网卡名称
  3. 判断网卡是不是无线网卡,如果是则判断是否正常运行,如果是则获取对应信息
  4. 如果网卡不是无线网卡则是有线网卡,判断是否正常运行,如果是则获取对应信息
  5. 输出有线无线网卡信息

流程图

image

实现脚本

get_ip.sh

脚本如下

#Author:
#File: get_ip.sh
#Project:
#Description: 本脚本实现获取有线无线网卡的网卡名,mac,ip地址等
#How Use:
# 获取所有网卡名称
network_name=`ifconfig |awk '{print $1}'|grep :|awk -F: '{print $1}'`
# 按网卡名遍历
for net_name in ${network_name}
   do
       #echo ${net_name}
       # 如果是本机回环网卡则退出本次循环
       if [ ${net_name} = 'lo' ]
          then
              continue
       fi
       # 判断是否是无线网卡
       iwconfig_num=`iwconfig ${net_name}|grep 'IEEE'|wc -l`
       if [ ${iwconfig_num} -ge 1 ]
           then
                #echo "It is wireless"
                # 判断网线网卡是否up状态
                running_num=`ifconfig ${net_name}|grep RUNNING|wc -l`
                if [ ${running_num} -ge 1 ]
                    then
                        # 获取网卡名称,网卡ip,网卡子网掩码,网卡网关,网卡dns前缀,网卡dns,网卡mac
                        wireless_name=${net_name}
                        wireless_ip=`ifconfig ${wireless_name}|grep 'inet'|awk '{print $2}'|sed  -n '1p'`
                        wireless_netmask=`ifconfig ${wireless_name}|grep inet|awk '{print $4}'|sed -n '1p'`
                        wireless_gateway=`ip route show|grep ${net_name}|grep default|awk '{print $3}'`
                        wireless_dns_suffix=''
                        wireless_dns=`cat /etc/resolv.conf |grep nameserver|awk '{print $2}'`
                        wireless_mac=`ifconfig ${wireless_name}|grep ether|awk '{print $2}'`
                        echo "无线网卡信息" ${wireless_name} ${wireless_ip} ${wireless_netmask} ${wireless_gateway} ${wireless_dns_suffix} ${wireless_dns} ${wireless_mac}
                    else
                        echo "${net_name} is down"
                fi
            # 如果网卡不是无线网卡则是有线网卡
            else
                #echo "It is wired"
                running_num=`ifconfig ${net_name}|grep RUNNING|wc -l`
                if [ ${running_num} -ge 1 ]
                    then
                        wired_name=${net_name}
                        wired_ip=`ifconfig ${wired_name}|grep 'inet'|awk '{print $2}'|sed  -n '1p'`
                        wired_netmask=`ifconfig ${wired_name}|grep inet|awk '{print $4}'|sed -n '1p'`
                        wired_gateway=`route -n|awk '{print $2}'|sed -n '3p'`
                        wired_dns_suffix=''
                        wired_dns=`cat /etc/resolv.conf |grep nameserver|awk '{print $2}'`
                        wired_mac=`ifconfig ${wired_name}|grep ether|awk '{print $2}'`
                        echo "有线网卡信息" ${wired_name} ${wired_ip} ${wired_netmask} ${wired_gateway} ${wired_dns_suffix} ${wired_dns} ${wired_mac}
                    else
                        echo  "${net_name} is down"
                fi
       fi

   done

运行结果如下

正确获取网卡对应信息

ky@ky-ZhaoYangN4620Z-A123:~/桌面$ sh get_ip.sh
enp5s0    no wireless extensions.

有线网卡信息 enp5s0 192.168.3.22 255.255.255.0 192.168.3.1 127.0.0.53 1c:83:41:2c:99:f8
无线网卡信息 wlp6s0 192.168.100.26 255.255.255.0 192.168.100.1 127.0.0.53 94:08:53:bd:6c:f3
posted @ 2022-03-21 15:52  minseo  阅读(2205)  评论(0编辑  收藏  举报