#!/bin/bash #---------------------------------------------------------------------------------------------------------------------------------------------- # # 1、 judgeMasterNos.py 先启动,以后台方式启动; # 2、 judgeMasterNos.py启动以后,sleep 2秒后,再启动arpProxy.py;同时通过ps命令查看arpProxy.py进程是否存在,如果不存在将启动失败信息写入到当前目录下的log中; # 3、 arpProxy.py启动以后,sleep 2秒后,再启动icmpProxy.py;同时通过ps命令查看icmpProxy.py进程是否存在,如果不存在将启动失败信息写入到当前目录下的log中; # 4、 icmpProxy.py启动以后,sleep 2秒后,再启动udpProxy.py;同时通过ps命令查看udpProxy.py进程是否存在,如果不存在将启动失败信息写入到当前目录下的log中; # 5、 udpProxy.py启动以后,sleep 2秒后,再启动tcpProxy.py;同时通过ps命令查看tcpProxy.py进程是否存在,如果不存在将启动失败信息写入到当前目录下的log中; # 6、 判断arpProxy.py、icmpProxy.py、udpProxy.py、tcpProxy.py四个进程是否存在,如果不存在,将错误信息写入到log中。 # #---------------------------------------------------------------------------------------------------------------------------------------------- #cmdpre="awk '/" #cmdsuf="/' awk.temp" log_mod="init_err" #用于分支不同的log格式 #在启动时的log记录 function log() { ERR_LOGFILE="error.log" echo "[$pro] failed." CUR_TIME=`date +'%Y-%m-%d %H-%M-%S'` if [ -f $ERR_LOGFILE ];then echo "[$pro] started failed at time $CUR_TIME" >> error.log; fi } #在最后检查时的log记录 function log_check() { ERR_LOGFILE="error.log" echo "[$pro] don't exist." CUR_TIME=`date +'%Y-%m-%d %H-%M-%S'` if [ -f $ERR_LOGFILE ];then echo "[$pro] don't exist at time $CUR_TIME" >> error.log; fi } #判断是否从ps中抓取到进程,没有则调用log function isNull() { if [ "$a" = "" ];then if [ $log_mod = "init_err" ];then log else log_check fi fi } #启动一个进程,然后启动后抓取ps function start() { sleep 2 echo "[$pro] init..." if [ -f "${pro}.pyc" ];then $s python ${pro}.pyc >/dev/null 2>&1 & ps a > ps.temp awk '{print $6}' 'ps.temp' > awk.temp #cmd=${cmdpre}${pro}${cmdsuf} #尝试用连接的方法将awk组合命令,但是会报错 fi } #'sudo' 命令前缀 s='' # 1、 if [ -f "judgeMasterNos.pyc" ];then $s nohup python judgeMasterNos.pyc >/dev/null 2>&1 & fi # 2、 pro="arpProxy" start a=`awk '/arpProxy/' 'awk.temp'` #因为命令中不能引用变量所以在这里分别写。 isNull # 3、 pro="icmpProxy" start a=`awk '/icmpProxy/' 'awk.temp'` isNull # 4、 pro="udpProxy" start a=`awk '/udpProxy/' 'awk.temp'` isNull # 5、 pro="tcpProxy" start a=`awk '/tcpProxy/' 'awk.temp'` isNull pro="sshRelay" start a=`awk '/sshRelay/' 'awk.temp'` isNull pro="pro_mimic" start a=`awk '/pro_mimic/' 'awk.temp'` isNull pro="rip_mimic" start a=`awk '/rip_mimic/' 'awk.temp'` isNull # 6、 #改变log格式 log_mod="check" ps a > ps.temp awk '{print $6}' 'ps.temp' > awk.temp pro="arpProxy" a=`awk '/arpProxy/' 'awk.temp'` isNull # 6、 #改变log格式 log_mod="check" ps a > ps.temp awk '{print $6}' 'ps.temp' > awk.temp pro="arpProxy" a=`awk '/arpProxy/' 'awk.temp'` isNull pro="icmpProxy" a=`awk '/icmpProxy/' 'awk.temp'` isNull pro="udpProxy" a=`awk '/udpProxy/' 'awk.temp'` isNull pro="tcpProxy" a=`awk '/tcpProxy/' 'awk.temp'` isNull pro="sshRelay" a=`awk '/sshRelay/' 'awk.temp'` isNull pro="pro_mimic" a=`awk '/pro_mimic/' 'awk.temp'` isNull pro="rip_mimic" a=`awk '/rip_mimic/' 'awk.temp'` isNull