网络流量监控shell脚本
网络收发包计数记录在 /proc/net/dev 文件中, 要取得流量, 只需要读取里面的内容两次, 然后相减, 再除以时间间隔即可.
#!/bin/bash #Usage1,record in file: netmonitor <MinKB> <Interval> <FileName>
#Usage2,print on terminal: netmonitor <MinKB> <Interval>
#Record the value great than 100KB, 3 second Interval:
#Example1,record: netmonitor 100 3 xxx.txt
#Example2,print: netmonitor 100 3 #参数说明
#第一个是速度记录的下限,单位是KB,即超过多少KB才记录,0为全部记录
#第二个参数是采样间隔,即隔多少秒记录一次
#第三个参数是输出的文件名,为空的话就直接在终端打印 #xieqianli
#2011-4-25 #同时修改下列变量可以固定参数,使用脚本时就无需参数
MinKB="$1"
Interval="$2"
FileName="$3"
NetDev="wlan0" #检查参数完整性
if [ "$Interval" == "" ];then
echo "Usage1,record in file: netmonitor <MinKB> <Interval> <FileName>"
echo "Usage2,print on terminal: netmonitor <MinKB> <Interval>"
echo "Record the values great than 100KB, 3 seconds Interval:"
echo "Example1,record: netmonitor 100 3 xxx.txt"
echo "Example2,print: netmonitor 100 3"
exit 1
fi #检查 MinKB 参数的合法性
check=`echo $MinKB | grep "[^0-9]"`
if [ "$check" != "" ];then
echo "$MinKB is not a number"
exit 0
fi len=${#MinKB}
char1=`echo $MinKB | cut -c 1`
if [ $(($len)) -gt $((1)) -a "$char1"=="0" ];then
echo "$MinKB is not a number"
exit 0
fi #检查 Interval 参数的合法性
check=`echo $Interval | grep "[^0-9]"`
if [ "$check" != "" ];then
echo "$Interval is not a number"
exit 0
fi len=${#Interval}
char1=`echo $Interval | cut -c 1`
if [ $(($len)) -gt $((1)) -a "$char1"=="0" ];then
echo "$Interval is not a number"
exit 0
fi while [ 1 ]
do
#读取已接收和已发送字节数,间隔一秒
REC1=`cat /proc/net/dev | grep $NetDev | sed 's/:/ /' | tr -s " " | cut -d " " -f 3`
SEND1=`cat /proc/net/dev | grep $NetDev | sed 's/:/ /' | tr -s " " | cut -d " " -f 11`
sleep $Interval
REC2=`cat /proc/net/dev | grep $NetDev | sed 's/:/ /' | tr -s " " | cut -d " " -f 3`
SEND2=`cat /proc/net/dev | grep $NetDev | sed 's/:/ /' | tr -s " " | cut -d " " -f 11` if [ $((REC2)) -lt $((REC1)) ];then
exit 1
fi if [ $((SEND2)) -lt $((SEND1)) ];then
exit 1
fi RESULT_REC=$((($REC2-$REC1)/$Interval))
RESULT_SENT=$((($SEND2-$SEND1)/$Interval)) #进行B,KB和MB的单位换算
if [ $RESULT_REC -lt $((1024)) ]; then
SPEED_REC="$RESULT_REC B "
elif [ $RESULT_REC -gt $((1024)) -a $RESULT_REC -lt $((1048576)) ]; then
SPEED_REC="$(($RESULT_REC/1024)) KB"
elif [ $RESULT_REC -gt $((1048576)) ];then
SPEED_REC="$(($RESULT_REC/1048576)) MB"
fi if [ $RESULT_SENT -lt $((1024)) ]; then
SPEED_SENT="$RESULT_SENT B "
elif [ $RESULT_SENT -gt $((1024)) -a $RESULT_SENT -lt $((1048576)) ]; then
SPEED_SENT="$(($RESULT_SENT/1024)) KB"
elif [ $RESULT_SENT -gt $((1048576)) ];then
SPEED_SENT="$(($RESULT_SENT/1048576)) MB"
fi #求时间
TIME=`date` #左边填充空格,把结果进行右对齐
ZERO=$((8-${#SPEED_REC}))
for (( i=0; i<$ZERO; i=i+1 ))
do
SPEED_REC=" $SPEED_REC"
done ZERO=$((8-${#SPEED_SENT}))
for (( i=0; i<$ZERO; i=i+1 ))
do
SPEED_SENT=" $SPEED_SENT"
done REC_KB="$(($RESULT_REC/1024))"
SEND_KB="$(($RESULT_SENT/1024))" #过滤掉小于 MinKB 的记录
if [ "$MinKB" != "0" -a $((REC_KB)) -lt $MinKB -a $((SEND_KB)) -lt $MinKB ];then
continue
fi #输出结果
if [ "$FileName" = "" ];then
echo "$TIME Receive:$SPEED_REC Send:$SPEED_SENT"
else
echo "$TIME Receive:$SPEED_REC Send:$SPEED_SENT" >> $FileName
fi
done
网络流量监控shell脚本的更多相关文章
- linux系统CPU,内存,磁盘,网络流量监控脚本
前序 1,#cat /proc/stat/ 信息包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累积到当前时刻 2,#vmstat –s 或者#vmstat 虚拟内存统计 3, #cat ...
- Linux 性能监控之CPU&内存&I/O监控Shell脚本2
Linux 性能监控之CPU&内存&I/O监控Shell脚本2 by:授客 QQ:1033553122 思路: 捕获数据->停止捕获数据->提取数据 备注:一些命令的输 ...
- Linux 性能监控之CPU&内存&I/O监控Shell脚本1
Linux 性能监控之CPU&内存&I/O监控Shell脚本1 by:授客 QQ:1033553122 #!/bin/bash # 获取要监控的本地服务器IP地址 IP=`if ...
- shell脚本实现监控shell脚本的执行流程及变量的值
这篇文章主要介绍了shell脚本实现监控shell脚本的执行流程及变量的值本文使用shell完成对执行过程中条件语句中的变量的变化的监控和整个程序的执行流程的观察功能,需要的朋友可以参考下 很多时候, ...
- Linux网络流量监控与分析工具Ntopng
Ntopng工具 Ntopng是一个功能强大的流量监控.端口监控.服务监控管理系统 能够实现高效地监控多台服务器网络 Ntopng功能介绍 Ntop提供了命令行界面和web界面两种工作方式,通过web ...
- 搭建一个简单的基于web的网络流量监控可视化系统
本文转载于我的个人博客,转载请标明出处. 初衷 在腾讯云的学生认证申请提交上去n天之后,终于得到了审批,所以迫不及待的想玩玩腾讯云,作为一个搞网络的,自然有一些关于网络应用的小玩意,所以把以前部署过的 ...
- 常用的主机监控Shell脚本
最近时不时有朋友问我关于服务器监控方面的问题,问常用的服务器监控除了用开源软件,比如:cacti,nagios监控外是否可以自己写shell脚本呢?根据自己的需求写出的shell脚本更能满足需求,更能 ...
- linux 网络数据收发网络流量监控
网卡流量 1.iftop命令 iftop可以用来监控网卡的实时流量(可以指定网段).反向解析IP.显示端口信息.TCP/IP连接等官网:http://www.ex-parrot.com/~pdw/if ...
- Linux常用的系统监控shell脚本
http://www.linuxqd.com下面是我常用的几个Linux系统监控的脚本,大家可以根据自己的情况在进行修改,希望能给大家一点帮助.1.查看主机网卡流量 #!/bin/bash #netw ...
随机推荐
- 过滤3个字节以上的utf-8字符
/** * 过滤掉超过3个字节的UTF8字符 * @param text * @return * @throws UnsupportedEncodingException */ public stat ...
- 配置webstorm使用supervisor时出现 /usr/bin/env: node: 没有那个文件或目录 解决方法
配置好supervisor路径后 出现了 启动时出现了 /usr/bin/env: node: 没有那个文件或目录 需要讲.nvm下的node链接到, /usr/bin/目录下 sudo ln -s ...
- [Flex] PopUpButton系列 —— 弹出菜单的行高设置
<?xml version="1.0" encoding="utf-8"?> <!--Flex中如何通过variableRowHeight样式 ...
- [Flex] ButtonBar系列——flex3 ButtonBar属性labelPlacement标签相对于指定图标的方向
<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="h ...
- oracle—无法启动
pl/sql连接oracle,出现下列错误,即没有启动该数据库的监听程序 启动该数据库的监听程序,出现如下错误,即未配置监听器 配置监听器
- gRPC 的 RoadMap 20160325 更新
gRPC是一个高性能.通用的开源RPC框架,其由Google主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers)序列化协议开发,且支持众多开发 ...
- android 4.4 状态栏隐藏
这个是Android Developer上的原文 反正我也看得不是很懂 我知道的就是实现和导航栏和状态栏的透明 带一些渐变效果 1. 设置主题 <style name="Theme.T ...
- esriSRProjCS4Type Constants
ArcGIS Developer Help (Geometry) esriSRProjCS4Type Constants See Also esriSRProjCSType Constants ...
- ZOJ 2404 Going Home 【最小费用最大流】
思路: 把房子和人看成点,加上源点和汇点. 源点和每个人连容量为1,权值为0的边. 每个人和每个房子连容量为1,权值为距离的边. 每个房子和汇点连容量为1,权值为0的边. #include<st ...
- ListView中内容的动画效果
LayoutAnimationController用于为一个layout里面的控件,或者是一个ViewGroup里面的控件设置动画效果,可以在XML文件中设置,亦可以在Java代码中设置. 一种直接在 ...