免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3514 | 回复: 4
打印 上一主题 下一主题

[系统管理] shell更新数据 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2019-07-23 17:24 |只看该作者 |倒序浏览
需求:执行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


论坛徽章:
0
2 [报告]
发表于 2019-07-23 17:26 |只看该作者
之前增加了一个参数 sleep 10,但是这样觉得有问题,如果系统异常10s服务还没有完全停止还是检测结果异常,如果时间长了,造成服务更新延迟。

论坛徽章:
12
2015年亚洲杯之乌兹别克斯坦
日期:2015-04-10 18:29:00狮子座
日期:2016-01-17 15:40:28处女座
日期:2016-01-16 17:36:17巨蟹座
日期:2016-01-16 17:35:48未羊
日期:2015-12-12 16:18:26青铜圣斗士
日期:2015-12-09 01:07:50IT运维版块每日发帖之星
日期:2015-12-05 06:20:00神斗士
日期:2015-12-03 23:13:59IT运维版块每日发帖之星
日期:2015-11-22 06:20:00IT运维版块每日发帖之星
日期:2015-11-08 06:20:00IT运维版块每日发帖之星
日期:2015-10-29 06:20:00IT运维版块每日发帖之星
日期:2016-06-30 06:20:00
3 [报告]
发表于 2019-07-29 01:03 |只看该作者
从楼主题意理解应该是停服更新?  加个while 3次的判断,每次sleep 1-2秒呢, 几次重试后如果服务还是没有停止的状态就应该停止更新并提示异常了。  不知这样是否可以

论坛徽章:
8
2016科比退役纪念章
日期:2018-10-24 08:24:0115-16赛季CBA联赛之北控
日期:2019-03-12 14:34:562016科比退役纪念章
日期:2019-04-01 10:33:0915-16赛季CBA联赛之山东
日期:2019-04-17 12:46:3215-16赛季CBA联赛之广夏
日期:2019-05-09 16:40:4015-16赛季CBA联赛之广夏
日期:2019-10-10 15:33:4015-16赛季CBA联赛之辽宁
日期:2019-10-15 08:37:0615-16赛季CBA联赛之北控
日期:2021-03-30 15:53:34
4 [报告]
发表于 2019-07-29 08:53 |只看该作者
stop_oa之后,循环检测状态,直到状态不等于200时,退出循环,再执行update_db.

另外 你的check_url()看的不太明白,要检测多个url?   都是 echo $ALIVE   还要加个if判断干什么
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP