shell腳本需求
獲取主機有線網卡和無線網卡信息
需要獲取一下信息
- 網卡名稱
- 網卡ip
- 網卡子網掩碼
- 網卡網關
- 網卡dns前綴
- 網卡dns
- 網卡mac
步驟
- 獲取主機所有網卡名稱
- 遍歷網卡名稱
- 判斷網卡是不是無線網卡,如果是則判斷是否正常運行,如果是則獲取對應信息
- 如果網卡不是無線網卡則是有線網卡,判斷是否正常運行,如果是則獲取對應信息
- 輸出有線無線網卡信息
流程圖
實現腳本
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