獲取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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM