- 论坛徽章:
- 0
|
需求:执行shell后,首先是停止服务,然后检测停止后的状态,当停止检测状态不等于200,就执行更新数据库字段信息,code=400,status=down,但是目前的脚本执行后,按照顺序执行数据不准确,当执行停止服务后,服务没有完全停止就去检测状态,这样数据就会不准准确,希望大神指导一下,如何判断,当获取的状态不等于200才去执行数据库更新数据
#!/bin/bash
user=sa
passwd='password2019'
host='192.168.6.98'
DBName=ecology
Tablename=uf_serverStatus
OADir=/OAFS/WEAVER/Resin/
s1_status=up
s2_status=down
c1_code='200'
c2_code='400'
a1_address='192.168.6.97'
a2_address='192.168.6.101'
# update database data
update_db() {
if ["${check_url}"] = "200"; then
status=`sqlcmd -S $host -U $user -P $passwd -d $DBName -Q "update $Tablename set status =$s1_status,code=$c1_code,updateTime=${nowdate} where address=$a1_address"`
else
status=`sqlcmd -S $host -U $user -P $passwd -d $DBName -Q "update $Tablename set status =$s2_status,code=$c2_code,updateTime=${nowdate} where address=$a1_address"`
fi
}
get_nowdate() {
time=`date "+%Y-%m-%d %H:%M:%S"`
echo "${time}"
}
nowdate=`get_nowdate`
#stop OA Service
stop_oa() {
cd $OADir
bash -x stopresin.sh
}
#Check OA service status
check_url() {
cat $curlpath/urls.txt | while read url
do
ALIVE=$(curl -o /dev/null -s -w %{http_code} ${url})
if [ "$ALIVE" != "200" ]; then
echo $ALIVE
else
echo $ALIVE
fi
done
}
check_url=`check_url`
stop_oa
check_url
update_db
|
|