最近想个shell
关于ip流量的,
就是每10分钟检测一次ip的流量,如果ip的流量长时间为0,则重启网卡服务或者重启服务器
自己的写脚本能力比较差,故求个shell脚本,或者思路
0
本帖最后由 wsw13640218682 于 2016-2-16 16:51 编辑
监控ip流量的可以借鉴铭哥的监控网卡流量脚本,然后每隔10分钟检测可以在脚本里设置sleep 600,最后将脚本放进去计划任务里面执行
我这里也提供一个吧
while : ; do
time=`date +%m'-'%d" "%k':'%M':'%S`
rx_before=`ifconfig eth0|sed -n 8p|awk '{print $2}'|cut -c7-`
tx_before=`ifconfig eth0|sed -n 8p|awk '{print $6}'|cut -c7-`
sleep 2
rx_after=`ifconfig eth0|sed -n 8p|awk '{print $2}'|cut -c7-`
tx_after=`ifconfig eth0|sed -n 8p|awk '{print $6}'|cut -c7-`
rx_result=$[(rx_after-rx_before)/256]
tx_result=$[(tx_after-tx_before)/256]
echo "$time Now_In_Speed: "$rx_result"kbps Now_OUt_Speed: "$tx_result" kbps"
sleep 5
if [ $tx_result -eq 0 ]
then
sleep 20
reboot
fi
done
验证是可以的,但要ip流量为0的几率比较低,为了验证脚本成不成功我将时间按设置成这么短,刚刚网卡出口流量为0时候就重启了..你可以根据这个来再作调整
监控ip流量的可以借鉴铭哥的监控网卡流量脚本,然后每隔10分钟检测可以在脚本里设置sleep 600,最后将脚本放进去计划任务里面执行
我这里也提供一个吧
while : ; do
time=`date +%m'-'%d" "%k':'%M':'%S`
rx_before=`ifconfig eth0|sed -n 8p|awk '{print $2}'|cut -c7-`
tx_before=`ifconfig eth0|sed -n 8p|awk '{print $6}'|cut -c7-`
sleep 2
rx_after=`ifconfig eth0|sed -n 8p|awk '{print $2}'|cut -c7-`
tx_after=`ifconfig eth0|sed -n 8p|awk '{print $6}'|cut -c7-`
rx_result=$[(rx_after-rx_before)/256]
tx_result=$[(tx_after-tx_before)/256]
echo "$time Now_In_Speed: "$rx_result"kbps Now_OUt_Speed: "$tx_result" kbps"
sleep 5
if [ $tx_result -eq 0 ]
then
sleep 20
reboot
fi
done
验证是可以的,但要ip流量为0的几率比较低,为了验证脚本成不成功我将时间按设置成这么短,刚刚网卡出口流量为0时候就重启了..你可以根据这个来再作调整
0
#!/bin/bash
eth=$1
io=$2
net_file="/proc/net/dev"
if [ $2 == "in" ]
then
n_new=`grep "$eth" $net_file|awk '{print $1}'|cut -d: -f2`
n_old=`tail -1 /tmp/neti.log`
n=`echo "$n_new-$n_old"|bc`
d_new=`date +%s`
d_old=`tail -2 /tmp/neti.log|head -1`
d=`echo "$d_new-$d_old"|bc`
if_net=`echo "$n/$d"|bc`
echo $if_net
date +%s>>/tmp/neti.log
grep "$eth" $net_file|awk '{print $1}'|cut -d: -f2>>/tmp/neti.log
elif [ $2 == "out" ]
then
n_new=`grep "$eth" $net_file|awk '{print $9}'`
n_old=`tail -1 /tmp/neto.log`
n=`echo "$n_new-$n_old"|bc`
d_new=`date +%s`
d_old=`tail -2 /tmp/neto.log|head -1`
d=`echo "$d_new-$d_old"|bc`
if_net=`echo "$n/$d"|bc`
echo $if_net
date +%s>>/tmp/neto.log
grep "$eth" $net_file|awk '{print $9}'>>/tmp/neto.log
else
echo 0
fi
eth=$1
io=$2
net_file="/proc/net/dev"
if [ $2 == "in" ]
then
n_new=`grep "$eth" $net_file|awk '{print $1}'|cut -d: -f2`
n_old=`tail -1 /tmp/neti.log`
n=`echo "$n_new-$n_old"|bc`
d_new=`date +%s`
d_old=`tail -2 /tmp/neti.log|head -1`
d=`echo "$d_new-$d_old"|bc`
if_net=`echo "$n/$d"|bc`
echo $if_net
date +%s>>/tmp/neti.log
grep "$eth" $net_file|awk '{print $1}'|cut -d: -f2>>/tmp/neti.log
elif [ $2 == "out" ]
then
n_new=`grep "$eth" $net_file|awk '{print $9}'`
n_old=`tail -1 /tmp/neto.log`
n=`echo "$n_new-$n_old"|bc`
d_new=`date +%s`
d_old=`tail -2 /tmp/neto.log|head -1`
d=`echo "$d_new-$d_old"|bc`
if_net=`echo "$n/$d"|bc`
echo $if_net
date +%s>>/tmp/neto.log
grep "$eth" $net_file|awk '{print $9}'>>/tmp/neto.log
else
echo 0
fi
编辑回复