需求:应用自动部署后,需要加一个判断,确认应用是否启动成功,并返回成功或失败结果;成功则将对应结果传给其它自动化动作(比如:执行接口自动化测试)。
思路:匹配日志文件中应用服务启动成功后的某个字段,匹配到则返回成功的结果,规定时间内匹配不到,则判断启动失败。(服务进程判断方式不可取,服务刚启动时会存在进程;如果启动失败,进程会死掉)
实现如下:
#启动CWY服务
cd /opt/cwy8.31/product/module/A/CWY
sh startup.sh
#CWY服务启动判断
Logfile="/opt/cwy8.31/product/module/A/CWY/nohup.out"
Starttag="maTaskScheduler"
fun(){
i=0
while [ -f ${Logfile} ]
do
echo "正在通过日志确认是否启动"
echo "检查CWY服务启动日志输出的成功标识:【$Starttag】"
set +e
result=`grep $Starttag ${Logfile}`
started='started'
failed='failed'
set -e
if [ "$result" != "" ]
then
echo "启动成功 ........."
res=$started
break
else
if [ "$i" -gt 600 ]
then
echo "超时,判定启动失败 ........."
res=$failed
break
else
echo "启动中 ......."
sleep 1s
i=$[$i+1]
fi
fi
done
}
fun
echo $res
脚本调试问题记录:
1. 在while循环中使用return报错:hh.sh: line 18: return: can only `return' from a function or sourced script
问题原因:shell脚本中的return常放在函数中执行(也可用在shell脚本函数体外,执行方式为: source xx.sh)
解决办法:将while循环封装到函数中,调用函数可解决此报错问题
2. return字串报错:hh.sh: line 18: return: failed: numeric argument required
问题原因:shell的function只能返回整数值
解决办法:该处可以将返回值赋值给一个变量,调用该function后,可以通过该变量获取到返回值
3. 判断启动成功后,返回成功结果;判断启动失败后,不返回失败结果
问题原因:判断成功后,使用break(跳出循环);判断失败后,大意使用了exit(结束脚本执行)
解决办法:将失败判断条件中的exit改为break
本文来自博客园,作者:查拉图斯特拉面条,转载请注明原文链接:http://www.hackdig.com/12/hack-861246.htm
还没有评论,来说两句吧...