在運維工作中,要對每一台伺服器的網絡卡速率進行監控。但是如果專案很多,網絡卡取名規則不統一,就會導致不管zabbix還是其他的監控系統,對網絡卡的抓取都不能很精準和方便。所以自己寫了乙個獲取網絡卡指令碼,並且對速率進行監控。
#!/bin/bash
nets=()
results=()
#get the network card
fordirin`
cd /sys/class/net/ &&ls`
;doif[
`grep
"up" /sys/class/net/$dir/operstate &
>/dev/null &&
echo $dir |
grep -ve "em|local"` ]
;then
nets=
("$"
"$dir")fi
done
#judge the network speed and store in array
for card in
`echo $`;
do open_net=
`cat /etc/sysconfig/network-scripts/ifcfg-$
|grep -i onboot |
cut -d'=' -f2 |
tr'a-z'
'a-z'
` if
["$"
=="yes"];
then
/usr/sbin/ethtool $
&> /dev/null
if[$? -eq 0 ]
;then
ret=
`/usr/sbin/ethtool $
|grep speed |
awk -f':'''|
sed's/^[ \t]*//g'
` include=
`echo $card |
grep
"bond"
` if
["$include"
!=""];
thenif[
"x$ret"
=="x2000mb/s" -o "x$ret"
=="x20000mb/s"];
then
results=
("$"
"0")
else
results=
("$"
"1")
fielseif[
"x$ret"
=="x1000mb/s" -o "x$ret"
=="x10000mb/s"];
then
results=
("$"
"0")
else
results=
("$"
"1")
fifi
else
results=
("$"
"0")
fielse
results=
("$"
"0")
fidone
#judge the speed array
for result in
`echo $`;
doif
["$result"
=="1"];
then
final=
"1"fi
doneif[
"$final"
=="1"];
then
echo 1 > /tmp/network_speed.txt
else
echo 0 > /tmp/network_speed.txt
fi
通過zabbix來每分鐘獲取/tmp/network_speed.txt的值進行判斷,如果為0是網絡卡速率正常,如果是其他值就為異常。 linux設定網絡卡速率
ethtool ethtool ethx 查詢ethx網口基本設定 ethtool h 顯示ethtool的命令幫助 help ethtool i ethx 查詢ethx網口的相關資訊 ethtool d ethx 查詢ethx網口註冊性資訊 ethtool r ethx 重置ethx網口到自適應模...
網絡卡流量監控指令碼
sar n dev 1 2 sar命令包含在sysstat工具包中,提供系統的眾多統計資料。命令後面1 2 意思是 每一秒鐘取1次值,取2次。dev顯示網路介面資訊 另外,n引數很有用,他有6個不同的開關 dev edev nfs nfsd sock all 其代表的含義如下 dev顯示網路介面資訊...
linux下檢視網絡卡速率
我們都知道ifconfig a 可以列出所有網絡卡,但是怎麼判讀是千兆網絡卡還是百兆網絡卡呢?1.判斷是千兆網絡卡還是百兆網絡卡 ethtool ethx 檢視支援的速率 實際網絡卡速率可以看speed 100mb s 問題來了,是不是千兆網絡卡speed一定是1000m呢?不一定喲,網絡卡速率和網...