首先说声抱歉,因为这几天公司安排出差,所以课耽误一次,脚本练习题也是好几天没有给大家出。今天回来了,首先补上练习题。
写一个脚本,检测你的网络流量,并记录到一个日志里。需要按照如下格式,并且一分钟统计一次:
2014-09-29 10:11
eth0 input: 1000bps
eth0 output : 200000bps
################
2014-09-29 10:12
eth0 input: 1000bps
eth0 output : 200000bps
提示:使用sar -n DEV 1 59 这样可以统计一分钟的平均网卡流量,只需要最后面的平均值。另外,注意换算一下,1byt=8bit
写一个脚本,检测你的网络流量,并记录到一个日志里。需要按照如下格式,并且一分钟统计一次:
2014-09-29 10:11
eth0 input: 1000bps
eth0 output : 200000bps
################
2014-09-29 10:12
eth0 input: 1000bps
eth0 output : 200000bps
提示:使用sar -n DEV 1 59 这样可以统计一分钟的平均网卡流量,只需要最后面的平均值。另外,注意换算一下,1byt=8bit
0
本帖最后由 wyatt88 于 2014-9-30 11:23 编辑
来抢沙发,if条件因为出网卡流量过小,所以增加了判断{:4_111:},只支持单网卡
来抢沙发,if条件因为出网卡流量过小,所以增加了判断{:4_111:},只支持单网卡
- #!/bin/bash
- #trafic.sh
- #author:ww
- #avg trafic in per min
- filename=/tmp/trafic.log
- while :;
- do
- trac_info=`sar -n DEV 1 59 | tail -n 1`
- echo $trac_info
- in_trac_kb=`echo $trac_info | awk '{print $5}' | cut -d '.' -f1`
- out_trac_kb=`echo $trac_info | awk '{print $6}' | cut -d '.' -f1`
- nowtime=`date +%F" "%H:%M`
- in_bit=`expr $in_trac_kb "*" 1000 "*" 8`
- out_bit=`expr $out_trac_kb "*" 1000 "*" 8`
- if [ $out_trac_kb -eq 0 ]
- then
- out_trac_kb=`echo $trac_info | awk '{print $6}' | cut -d '.' -f2`
- case `echo $out_trac_kb | wc -c` in
- 2)
- out_bit=`expr $out_trac_kb "*" 100 "*" 8`
- ;;
- 3)
- out_bit=`expr $out_trac_kb "*" 10 "*" 8`
- ;;
- *)
- echo "error"
- ;;
- esac
- fi
- echo $nowtime >> $filename
- echo "eth0 input: "$in_bit"bps" >> $filename
- echo "eth0 output: "$out_bit"bps" >> $filename
- echo "################" >> $filename
-
- # sleep 60
- done
0
- [root@www sh]# cat 0929.sh
- #!/bin/bash
- # Desc : this script is of network traffic statistics every minutes
- # Writen by Jeffery.Su
- # Date: Sep,30 2014
- DATE=`date +"%Y-%m-%d %H:%M"`
- LOG_PATH=/tmp/traffic_check/`date +%Y%m`
- LOG_FILE=$LOG_PATH/traffic_check_`date +%d`.log
- [ -d $LOG_PATH] || mkdir -p $LOG_PATH
- echo " $DATE" >> $LOG_FILE
- sar -n DEV 1 59|grep Average|grep -v "IFACE\|lo"|awk '{print "\n",$2,"\t","input:",$5*1000*8,"bps","\t","\n",$2,"\t","output:",$6*1000*8,"bps" }' >> $LOG_FILE
- echo -e "#####################\n" >> $LOG_FILE
- echo "*/1 * * * * /bin/bash /usr/local/sbin/sh/0929.sh" >>/var/spool/cron/root
0
本帖最后由 齐天大圣 于 2014-9-30 12:13 编辑
- #!/bin/bash
- #Writen by lichao.V1 2014-09-30
- while :;
- do
- d=`date +%F\ %H:%M`
- sar=/tmp/sar.txt
- sar -n DEV 1 59 >$sar
- input=`grep 'Average' $sar|awk '$2~/eth0/{print $5}'|awk -F'.' '{print $1}'`
- output=`grep 'Average' $sar|awk '$2~/eth0/{print $6}'|awk -F'.' '{print $1}'`
- echo $d>>sar.log
- echo "eth0 input:`expr $input \* 8 \* 1000`bps">>sar.log
- echo "eth0 output:`expr $output \* 8 \* 1000`bps">>sar.log
- echo "####################">>sar.log
- done
0
本帖最后由 游夜 于 2014-10-2 04:21 编辑
- #!/bin/bash
- touch networkflow.log
- while : ;do
- data +%F' '%H:%m>>networkflow.log
- sar -n DEV 1 59 |awk '/Average/&&/eth*/{print $2" input:" $5*8*1024"bps";print$2" output:" $6*8*1024"bps"}'>>networkflow.log
- echo "################">>networkflow.log
- done
0
本帖最后由 陈沛 于 2014-10-4 21:56 编辑
- #/bin/bash
- # 2014-09-29
- # chenpei
- # Average network traffic
- # log file
- log_file="/tmp/traffic.log"
- while : ; do
- average=` sar -n DEV 1 59 | grep eth0 | sed -n '60'p`
- date "+%F %T" >> $log_file
- input_average=`echo $average | awk '{print $5}'`
- output_average=`echo $average | awk '{print $6}'`
- echo "eth0 input: " `echo "${input_average}*8" | bc` >> $log_file
- echo "eth0 output: " `echo "${output_average}*8" | bc` >> $log_file
- echo "#######################################################" >> $log_file
- done
0
- #!/bin/bash
- ## This script is for count network adapter traffic in a regular format every minute.
- ## Writed by Louis at 2014/10/01 15:35
- log=/tmp/netcount.log
- while :; do
- echo `date +'%F %T'` >> $log
- sar -n DEV 1 60 > /tmp/nettraffic.log
- receive_packets=`grep 'Average' /tmp/nettraffic.log|grep 'eth0'|awk '{print $5}'`
- transmit_packets=`grep 'Average' /tmp/nettraffic.log|grep 'eth0'|awk '{print $6}'`
- echo "eth0 input: "`echo "$receive_packets"*8|bc`"Kbps" >> $log
- echo "eth0 output: "`echo "$transmit_packets"*8|bc`"Kbps" >> $log
- echo "###########################" >> $log
- done
0
#!/bin/bash
while :;do
average=`sar -n DEV 1 60 | tail -n 1`
tx=`echo $average |awk '{print $6}'`
rx=`echo $average |awk '{print $5}'`
date=`date +"%F %T"`
echo $date >> net.log
echo "eth0 input: $rx kB/s">>net.log
echo "eth0 ouput: $tx kB/s">>net.log
echo "##########################################">>net.log
done
while :;do
average=`sar -n DEV 1 60 | tail -n 1`
tx=`echo $average |awk '{print $6}'`
rx=`echo $average |awk '{print $5}'`
date=`date +"%F %T"`
echo $date >> net.log
echo "eth0 input: $rx kB/s">>net.log
echo "eth0 ouput: $tx kB/s">>net.log
echo "##########################################">>net.log
done
0
a
- #!/bin/bash
- ## test by gxw
- date=`date +"%F %T"
- log=/tmp/sar/log
- daytime=`date +%F %T`
- input=`sar -n DEV |grep "average" | grep "eth0" |awk '{print $5}'`
- output=`sar -n DEV |grep "average" | grep "eth0" |awk '{print $6}'`
- input1=$[$input*8*1000]
- output2=$[$output*8*1000]
- echo "$date">$log
- echo "etho input : $input1">$log
- echo "etho output :$output2">$log
- echo "#########################">4log或者是上边的的市局合成一句
- echo -e "date\n etho input :$input\n
- etho output :$output \n #############\n">4.log
- 计划任务:
- */1 * * * * /bin/bash /root/shell/sar.sh
0
#!/bin/bash
while :; do
ADATE=`date +%F_%H:%M|sed -r 's#_# #g'`
AVGE=`sar -n DEV 1 59|grep 'Average'|grep 'eth0'`
AVGER=`echo "$AVGE"|awk -F' ' '{print $5}'|awk -F'.' '{print $1}'`
AVGET=`echo "$AVGE"|awk -F' ' '{print $6}'|awk -F'.' '{print $1}'`
echo "$ADATE" >> 1.log
let AVGER1=AVGER*8
let AVGET1=AVGET*8
echo "eth0 input: $AVGER1 bps" >> 1.log
echo "ech0 output: $AVGET1 bps" >> 1.log
echo "#####################" >> 1.log
done
while :; do
ADATE=`date +%F_%H:%M|sed -r 's#_# #g'`
AVGE=`sar -n DEV 1 59|grep 'Average'|grep 'eth0'`
AVGER=`echo "$AVGE"|awk -F' ' '{print $5}'|awk -F'.' '{print $1}'`
AVGET=`echo "$AVGE"|awk -F' ' '{print $6}'|awk -F'.' '{print $1}'`
echo "$ADATE" >> 1.log
let AVGER1=AVGER*8
let AVGET1=AVGET*8
echo "eth0 input: $AVGER1 bps" >> 1.log
echo "ech0 output: $AVGET1 bps" >> 1.log
echo "#####################" >> 1.log
done
0
#! /bin/bash
S=`date +%S`
date=`date +"%Y-%m-%d %H:%M"`
in=`sar -n DEV 1 1 |grep 'Average' |grep 'eth0' |awk '{print $5}'`
out=`sar -n DEV 1 1 |grep 'Average' |grep 'eth0' |awk '{print $6}'`
inbit=[$in]*8000
outbit=[$out]*8000
while [ $S==0 ]
do
echo "$date" >> traffic.log
echo "eth0 input: $inbit bps" >> traffic.log
echo "eth0 output: $output bps" >> traffic.log
echo "################" >> traffic.log
done
S=`date +%S`
date=`date +"%Y-%m-%d %H:%M"`
in=`sar -n DEV 1 1 |grep 'Average' |grep 'eth0' |awk '{print $5}'`
out=`sar -n DEV 1 1 |grep 'Average' |grep 'eth0' |awk '{print $6}'`
inbit=[$in]*8000
outbit=[$out]*8000
while [ $S==0 ]
do
echo "$date" >> traffic.log
echo "eth0 input: $inbit bps" >> traffic.log
echo "eth0 output: $output bps" >> traffic.log
echo "################" >> traffic.log
done
0
#!/bin/bash
while :;
do
d=`date +%F""%H%M`
rx=`sar -n DEV 1 10|grep eth0|tail -1 |awk -F " " '{print $5*1000*8}'`
tx=`sar -n DEV 1 10|grep eth0|tail -1 |awk -F " " '{print $6*1000*8}'`
echo $d >> /tmp/eth0.log
echo "eth0 input:$rx" >> /tmp/eth0.log
echo "eth0 output:$tx" >> /tmp/eth0.log
sleep 60
done
~
while :;
do
d=`date +%F""%H%M`
rx=`sar -n DEV 1 10|grep eth0|tail -1 |awk -F " " '{print $5*1000*8}'`
tx=`sar -n DEV 1 10|grep eth0|tail -1 |awk -F " " '{print $6*1000*8}'`
echo $d >> /tmp/eth0.log
echo "eth0 input:$rx" >> /tmp/eth0.log
echo "eth0 output:$tx" >> /tmp/eth0.log
sleep 60
done
~
0
#!/bin/bash
d=`date +"%F %H:%M"`
file1=/tmp/flow.txt
file2=/tmp/eth0.txt
while :
do
/usr/bin/sar -n DEV 1 59 |tail -n1 |awk '{print $5,$6}' >>$file1
input=`/usr/bin/tail -n1 $file1 |awk '{print $1}'`
output=`/usr/bin/tail -n1 $file1 |awk '{print $2}'`
echo $d >>$file2
echo "eth0 input:$input" >>$file2
echo "eth0 output:$output" >>$file2
echo "#######################" >>$file2
done
d=`date +"%F %H:%M"`
file1=/tmp/flow.txt
file2=/tmp/eth0.txt
while :
do
/usr/bin/sar -n DEV 1 59 |tail -n1 |awk '{print $5,$6}' >>$file1
input=`/usr/bin/tail -n1 $file1 |awk '{print $1}'`
output=`/usr/bin/tail -n1 $file1 |awk '{print $2}'`
echo $d >>$file2
echo "eth0 input:$input" >>$file2
echo "eth0 output:$output" >>$file2
echo "#######################" >>$file2
done
编辑回复