shell vs python脚本监控http请求

本文提供了使用Shell和Python编写的脚本示例,用于每分钟和每十秒定期检查特定HTTP服务的可用性。一旦发现服务不可用,脚本会自动重启服务。Shell脚本通过curl命令测试服务状态,而Python脚本利用requests库实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    各写一个shell和python脚本来监控http请求,并在服务不可用的时候重启服务。

监控的连接为:

http://192.168.1.101:5022/product

http://192.168.1.101:5024/module

shell脚本如下,配合crontab计划任务每一分钟执行一次检查:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/bin/bash
# This shell is used to moniter 192.168.1.101 port 5022 & 5024
date   #在crontab里用来记录log的时间
i=0
curl -s -m 10 192.168.1.101:5022 /product  /dev/null   #用crul测试服务是否可用
n=` echo  $?`   #只有在服务请求正常的情况下$?的值才为0
echo  "5022 curl echo $n"
curl -s -m 10 192.168.1.101:5024 /module  /dev/null
m=` echo  $?`  
echo  "5024 curl echo $m"
if  [[  "$n"  - eq  "$i"  &&  "$m"  - eq  "$i"  ]];  then
     echo  "api port 5022 and 5024 is ok."
else
     echo  "service need restart"
     /etc/init .d /serverapi  restart
fi

python脚本,每隔十秒诊断一次:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import  requests
import  os
import  time
from datetime  import  datetime, timedelta
 
def restart():
     try:
         urls = [ 'http://192.168.1.101:5022/product' 'http://192.168.1.101:5024/module' ]
         while  True:
#            import pdb
#            pdb.set_trace()
             sleep  = 10
             for  url  in  urls:
                 print( 'get %s' %url)
                 r = requests.get(url,timeout=10)
                 if  r.status_code == 200:
                     print( '%s is ok...' %url)
                     print( 'moniter continue after 10s' )
             time . sleep ( sleep )
     except Exception as e:
         print(e.message)
         print( '%s is ERROR !!!' %url)
         print( 'consoleapi will be restart' )
         os.system( '/etc/init.d/serverapi stop' )
     print( 'consoleapi stoped' )
         time . sleep (6)
         os.system( '/etc/init.d/serverapi start' )
if  __name__ ==  '__main__' :
     print( 'main' )
     def main():
       while  True:
             restart()
     main()

两个脚本写的都挺烂,呵呵。贴出来主要是提醒自己,用shell或者用Python怎么方便怎么用,不要太拘泥于形式。


      本文转自Jx战壕  51CTO博客,原文链接:http://blog.51cto.com/xujpxm/1737982,如需转载请自行联系原作者






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值