167 lines
3.8 KiB
Bash
167 lines
3.8 KiB
Bash
#!/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
|