whats 2011-04-20
-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