面對(duì)眾多的服務(wù)器丢习,每臺(tái)服務(wù)器的網(wǎng)卡名又不固定锅铅。所以需要寫(xiě)一個(gè)通用的形式來(lái)輸出網(wǎng)卡的流量
#!/bin/bash
echo "==monitor(network_name)"
#==================================network_card==========================================
network_card=$(awk '{if(NR>2)split($1,array,":");print array[1]}' /proc/net/dev | awk '{if(length !=0) print $0}')
for i in ${network_card[*]}
do
ifconfig ${i} >/dev/null 2>&1
if [ $? -eq 0 ];then
i_in_old=$(ifconfig $i | awk '$0~/RX bytes/{split($2,array,":");print array[2]}')
i_out_old=$(ifconfig $i | awk '$0~/TX bytes/{split($2,array,":");print array[2]}')
sleep 1
i_in_new=$(ifconfig $i | awk '$0~/RX bytes/{split($2,array,":");print array[2]}')
i_out_new=$(ifconfig $i | awk '$0~/TX bytes/{split($2,array,":");print array[2]}')
i_in=$(echo "scale=2;(${i_in_new} - ${i_in_old})/1024.0"| bc)
i_out=$(echo "scale=2;(${i_out_new} - ${i_out_old})/1024.0" | bc)
echo "network_name=${i},in_bandwidth"=${i_in},out_bandwidth"=${i_out}"
else
continue
fi
done
上面的執(zhí)行思路是沒(méi)先把網(wǎng)卡篩選出來(lái)梗夸,然后挨個(gè)循環(huán)一次借浊,循環(huán)到一個(gè)網(wǎng)卡的時(shí)候通過(guò)沉睡一分鐘計(jì)算網(wǎng)卡流量