shell 监控服务器联网状态

 

-rw-r--r-- 1 root root 1037 04-20 15:26 monitor_adsl_connect.log

-rw-r--r-- 1 root root 1876 04-20 15:05 monitor_adsl_connect.sh -rw-r--r-- 1 root root 1664 04-20 14:39 monitor_adsl_connect.sh.bak -rw-r--r-- 1 root root 122 04-20 15:26 monitor.pid -rw-r--r-- 1 root root 300 04-20 15:12 status.log

#!/bin/bash
#filename monitor_adsl_connect
#usg sh /bin/sh /root/monitor_adsl_connect/monitor_adsl_connect.sh
export LANG=zh_CN.UTF-8

eval `cat /root/monitor_adsl_connect/monitor.pid |grep pid | awk -F '=' '{print "pid="$2}'`  #得到进程文件中的进程pid值
if [ ! -z "$pid" ];                     #如果pid不为空,说明有进程正在执行,退出程序
then 
        eval `ps aux | grep $pid | grep -v grep | awk '{print "p_id="$2}'`
        if [ "$pid" = "$p_id" ];
        then 
                #echo "pid="$pid "正在运行,程序退出"
                exit
        fi
fi
echo pid=$$ > /root/monitor_adsl_connect/monitor.pid
file=/root/monitor_adsl_connect/monitor_adsl_connect.log        #输出文件
eval `/sbin/adsl-status /etc/sysconfig/network-scripts/ifcfg-ppp0 | grep adsl-status | awk -F ":" '{print $2}' | awk '{print "status="$5}'`     #得到adsl的状态值
flag="running"
if [ "$status" = "$flag" ];     #如果状态值是 running ,则说明正在运行,ok,设置sta 为 running
then 
        sta="running"
else
        sta="down and start"

        /sbin/adsl-status /etc/sysconfig/network-scripts/ifcfg-ppp0 >> /root/monitor_adsl_connect/status.log

        /sbin/adsl-start /etc/sysconfig/network-scripts/ifcfg-ppp0      #start adsl

        while(( 1 ))
        do
                eval `/sbin/adsl-status /etc/sysconfig/network-scripts/ifcfg-ppp0 | grep adsl-status | awk -F ":" '{print $2}' | awk '{print "status="$5}'`

                /sbin/adsl-status /etc/sysconfig/network-scripts/ifcfg-ppp0 >> /root/monitor_adsl_connect/status.log

                if [ "$status" = "$flag" ];
                then
                        break
                fi
        done
fi
eval `/sbin/adsl-status /etc/sysconfig/network-scripts/ifcfg-ppp0 | grep inet | awk '{print "ip="$2}'`  #get ip 
eval `date | awk '{print "year="$1,"month="$2,"day="$3,"time="$5}'`     #get time
echo -e "$year $month $day $time\t$sta\t$ip">>$file                     #output to file
echo "pid=" > /root/monitor_adsl_connect/monitor.pid  #清空进程pid
env >> /root/monitor_adsl_connect/monitor.pid

 

 

定时运行:每隔一分钟运行一次,

 

 

[root@centos200 monitor_adsl_connect]# crontab -l
0-59/1 * * * * /bin/sh /root/monitor_adsl_connect/monitor_adsl_connect.sh
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值