网易首页 > 网易号 > 正文 申请入驻

使用shell脚本获取流量信息

0
分享至

前言

使用shell命令从/proc/net/dev获取流量信息进行监控。

脚本

#!/bin/bash

interface=$1

warn_rx_limit=$2

warn_tx_limit=$3

critical_rx_limit=$4

critical_tx_limit=$5

#使用方法

USAGE="USAGE : $0 interface warn_rx_limit warn_tx_limit critical_rx_limit critical_tx_limit, such as $0 eth0 10 10 50 50"

if [ $# -lt 5 ]; then

echo "Hava no enough parameters - "$USAGE

exit 3

fi

record_time=$(date +%s)

rx=0

tx=0

content=$(cat /proc/net/dev | grep -v "|" | awk '{split($1,b,":");print b[1]" "$2" "$10 }')

a=0

for i in $content; do

if [ "$i" == "$interface" ]; then

# echo $i

let a=a+1

continue

fi

if [ "$a" == "1" ]; then

rx=$i

# echo "a=$a"

let a=a+1

continue

fi

if [ "$a" == "2" ]; then

tx=$i

# echo "a=$a"

break

fi

# echo "a=$a"

# echo $i

done

if [ "$a" == "0" ]; then

echo "$interface is not exists"

exit 3

fi

# echo "rx="$rx

# echo "tx="$tx

record_file="/tmp/net_traffic_$interface"

if [ ! -f $record_file ]; then

echo "$record_time $rx $tx" >$record_file

echo "first check..."

exit 0

fi

last_record_time=$(cat $record_file | awk '{print $1}')

last_rx=$(cat $record_file | awk '{print $2}')

last_tx=$(cat $record_file | awk '{print $3}')

# echo $last_record_time

# echo $last_rx

# echo $last_tx

interval=$(awk -v last_record_time=$last_record_time -v record_time=$record_time 'BEGIN{print record_time-last_record_time}')

if [ "$interval" == "0" ]

then

echo "check interval must greater than 1s"

exit 4

fi

avg_rx=$(awk -v rx=$rx -v last_rx=$last_rx -v last_record_time=$last_record_time -v record_time=$record_time 'BEGIN{a=(rx-last_rx)*8.0/1024.0/1024.0/(record_time-last_record_time);printf("%.4f",a)}')

# echo "avg_rx="$avg_rx"Mbps"

avg_tx=$(awk -v tx=$tx -v last_tx=$last_tx -v last_record_time=$last_record_time -v record_time=$record_time 'BEGIN{a=(tx-last_tx)*8.0/1024.0/1024.0/(record_time-last_record_time);printf("%.4f",a)}')

total=$(awk -v avg_rx=$avg_rx -v avg_tx=$avg_tx 'BEGIN{printf("%.4f",avg_rx+avg_tx)}' )

rx_result=$(awk -v avg_rx=$avg_rx -v warn_rx_limit=$warn_rx_limit -v critical_rx_limit=$critical_rx_limit 'BEGIN{if(avg_rx>critical_rx_limit)print 100 ; else if(avg_rx>warn_rx_limit) print 50 ; else print 0}')

tx_result=$(awk -v avg_tx=$avg_tx -v warn_tx_limit=$warn_tx_limit -v critical_tx_limit=$critical_tx_limit 'BEGIN{if(avg_tx>critical_tx_limit)print 100 ; else if(avg_tx>warn_tx_limit) print 50 ; else print 0}')

if [[ "$rx_result" == "100" || "$tx_result" == "100" ]]; then

echo "Critical - Network traffice in is $avg_rx Mbps , out is $avg_tx Mbps ,check interval is $interval s | In=${avg_rx}Mbps;$warn_rx_limit;$critical_rx_limit;0;0 Out=${avg_tx}Mbps;$warn_tx_limit;$critical_tx_limit;0;0 Total=${total}Mbps Time_interval=${interval}s"

echo "$record_time $rx $tx" >$record_file

exit 1

elif [[ "$rx_result" == "50" || "$tx_result" == "50" ]]; then

echo "Warning - Network traffice in is $avg_rx Mbps , out is $avg_tx Mbps ,check interval is $interval s | In=${avg_rx}Mbps;$warn_rx_limit;$critical_rx_limit;0;0 Out=${avg_tx}Mbps;$warn_tx_limit;$critical_tx_limit;0;0 Total=${total}Mbps Time_interval=${interval}s"

echo "$record_time $rx $tx" >$record_file

exit 2

else

echo "OK - Network traffice in is $avg_rx Mbps , out is $avg_tx Mbps ,check interval is $interval s | In=${avg_rx}Mbps;$warn_rx_limit;$critical_rx_limit;0;0 Out=${avg_tx}Mbps;$warn_tx_limit;$critical_tx_limit;0;0 Total=${total}Mbps Time_interval=${interval}s"

echo "$record_time $rx $tx" >$record_file

exit 0

fi

总结

使用方法

./check_net_traffice.sh eth0 10 10 50 50

默认单位是Mbps,如果是nagios配置的时候注意临时记录文件/tmp/net_traffic_×的权限。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
“电力”第一龙头大爆发,手握万亿订单,有望10倍以上的增长!

“电力”第一龙头大爆发,手握万亿订单,有望10倍以上的增长!

芳市聊股
2024-04-18 16:30:03
大妈躺座椅致航班延误后续:身份特殊,知情人爆内幕打脸桂林航空

大妈躺座椅致航班延误后续:身份特殊,知情人爆内幕打脸桂林航空

二次元小韩
2024-04-18 11:23:23
王艺迪惨败风波发酵!邓亚萍一针见血,张本美和一番话更让她破防

王艺迪惨败风波发酵!邓亚萍一针见血,张本美和一番话更让她破防

林子说事
2024-04-18 17:54:27
连炸15家炼油厂,俄罗斯又有求于我国了,急于进口中国石油设备

连炸15家炼油厂,俄罗斯又有求于我国了,急于进口中国石油设备

胖福的小木屋
2024-04-16 23:50:59
乌克兰“杀疯了”,俄军无可奈何,困局无解,普京或取消今年阅兵

乌克兰“杀疯了”,俄军无可奈何,困局无解,普京或取消今年阅兵

姗姗时频
2024-04-16 13:14:30
一篇分析世界格局最透彻的雄文!

一篇分析世界格局最透彻的雄文!

诗词中国
2024-03-31 06:05:04
周海媚在北京安葬,母亲放弃继承上亿财产,聪明的分给了其他子女

周海媚在北京安葬,母亲放弃继承上亿财产,聪明的分给了其他子女

七阿姨爱八卦
2024-04-18 11:04:07
广东大胜广厦评分:三人满分全队及格,控卫线不同凡响

广东大胜广厦评分:三人满分全队及格,控卫线不同凡响

撒丁岛体育
2024-04-19 00:16:28
阿娇还是不婚族,而前夫赖弘国喜晒二胎B超,结婚两年抱俩超幸福

阿娇还是不婚族,而前夫赖弘国喜晒二胎B超,结婚两年抱俩超幸福

麦大人
2024-04-11 12:59:06
吃不完,根本吃不完!当酒店前台瓜吃不完

吃不完,根本吃不完!当酒店前台瓜吃不完

马蹄烫嘴说美食
2024-04-18 20:36:38
龙年龙日龙时撞上占星神童阿南德预言:预言日本地震,称4月巨变

龙年龙日龙时撞上占星神童阿南德预言:预言日本地震,称4月巨变

贰文
2024-04-08 23:33:43
快女黄英自曝在北京买不起房,面试浪姐失败后,宣告结束15年北漂

快女黄英自曝在北京买不起房,面试浪姐失败后,宣告结束15年北漂

娱圈小愚
2024-04-18 09:52:02
云南省委决定:胡金明履新,王德强卸任

云南省委决定:胡金明履新,王德强卸任

鲁中晨报
2024-04-18 17:20:05
性生活互吻私处,真的健康吗?

性生活互吻私处,真的健康吗?

徐海洋的历史故事
2024-02-19 14:43:47
《城中之城》直到胡悦爬上行长的床,程家元都不知道,自己爱错人

《城中之城》直到胡悦爬上行长的床,程家元都不知道,自己爱错人

宇林网络
2024-04-18 15:24:54
为何庞统临死前告诉刘备:你被诸葛亮给骗了?蜀汉败亡就在于此

为何庞统临死前告诉刘备:你被诸葛亮给骗了?蜀汉败亡就在于此

知否否
2024-04-17 19:31:27
噩耗:又一位46岁女演员去世!死在床上3天才被发现,生前遭父

噩耗:又一位46岁女演员去世!死在床上3天才被发现,生前遭父

娱乐圈酸柠檬
2024-04-18 14:05:54
刚刚!人民币传来大消息!美日韩紧急声明,五大央行集体出动

刚刚!人民币传来大消息!美日韩紧急声明,五大央行集体出动

数据宝
2024-04-18 12:54:20
唐安琪天使颜值和魔鬼身材,令无数粉丝为之疯狂

唐安琪天使颜值和魔鬼身材,令无数粉丝为之疯狂

傲娇的马甲线
2024-04-16 17:40:03
沪媒谈京沪战罚单:锁喉=伸手推搡?CBA双标罚单究竟打了谁的脸?

沪媒谈京沪战罚单:锁喉=伸手推搡?CBA双标罚单究竟打了谁的脸?

直播吧
2024-04-18 17:33:15
2024-04-19 06:30:44
linux运维菜
linux运维菜
喜欢使用Linux!
412文章数 4574关注度
往期回顾 全部

科技要闻

车圈顶流雷军直播:现在每天提心吊胆

头条要闻

肯尼亚军机坠毁 国防军司令等10人丧生

头条要闻

肯尼亚军机坠毁 国防军司令等10人丧生

体育要闻

前国脚:年薪1000万和10万是一样的

娱乐要闻

《酱园弄》官宣!赵丽颖等配角上热搜

财经要闻

围猎三丰智能的神秘基金设骗局转移资产

汽车要闻

元UP中配130kW动力!比亚迪这次不抠门

态度原创

教育
游戏
房产
数码
手机

教育要闻

上交附中期末考试,求值,a²+4b²-2a-4b+3

叠纸开放世界新游《无限暖暖》直播:首曝实机演示及测试消息

房产要闻

广州房价,再次领跌一线

数码要闻

雷蛇骑仕 Ultra 和 V2 USB C 手机游戏手柄发布,799 元起

手机要闻

华为Pura 70发布之前,鸿蒙原生应用又有了大动作

无障碍浏览 进入关怀版