mon_netstat.sh

来自「Linux Shell 编程」· Shell 代码 · 共 65 行

SH
65
字号
#!/bin/bash# 是否是测试版V_DEBUG=1# 是否记录日志信息F_DEBUG=1# 监测的网络接口interface=eth0# 监测的时间间隔,秒计INTERVAL=100# 两次检测之间的所接收和传输的包数的最小差值DIFFERENCE=5# 监测和进程名PRGNAME=/tcpwatchwhile true; do   /bin/netstat -s --udp > .if.tmp   if [ ! -r .save.tmp ]; then      last_in=0;      last_out=0;   else      exec < .save.tmp      read last_in      read last_out   fi   exec < .if.tmp   read udp_id   read rxx   NowRXpackets=`echo $rxx | cut -f1 -d' '`   read uxx   read exx   read txx   NowTXpackets=`echo $txx | cut -f1 -d' '`   echo $NowRXpackets > .save.tmp   echo $NowTXpackets >> .save.tmp   RXdifference=`expr $NowRXpackets - $last_in`   TXdifference=`expr $NowTXpackets - $last_out`   if [ "$V_DEBUG" -eq "1" ]; then      echo "last in: $last_in, last_out: $last_out"      echo "now receive:$NowRXpackets, and send:$NowTXpackets"      echo "RX difference:$RXdifference, TX difference:$TXdifference"   fi   if [ "$TXdifference" -lt "$DIFFERENCE" ]; then      /usr/bin/killall -9 $PRGNAME &      sleep 10      $PRGNAME &         if [ "$F_DEBUG" -eq "1" ]; then            echo "------------------Program restart----------------" >> /mon.log            date >> /mon.log            echo "last in: $last_in, last_out: $last_out" >> /mon.log            echo "now receive:$NowRXpackets, and send:$NowTXpackets" >> /mon.log            echo "RX difference:$RXdifference, TX difference:$TXdifference" >> /mon.log         fi   fi   sleep $INTERVALdone

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?