shell vs python脚本监控http请求

简介:

    各写一个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,如需转载请自行联系原作者






相关文章
|
1月前
|
缓存 前端开发 API
|
24天前
|
JSON API 数据格式
Python中获取HTTP请求响应体的详解
本文介绍了如何使用Python的`requests`和`urllib`库发送HTTP请求并处理响应体。`requests`库简化了HTTP请求过程,适合快速开发;`urllib`库则更为底层,适用于性能要求较高的场景。文章详细演示了发送GET请求、处理JSON响应等常见操作。
36 3
|
23天前
|
安全 API 网络安全
使用OkHttp进行HTTPS请求的Kotlin实现
使用OkHttp进行HTTPS请求的Kotlin实现
|
5天前
|
Web App开发 网络安全 数据安全/隐私保护
Lua中实现HTTP请求的User-Agent自定义
Lua中实现HTTP请求的User-Agent自定义
|
1月前
|
前端开发 JavaScript Java
如何捕获和处理HTTP GET请求的异常
如何捕获和处理HTTP GET请求的异常
|
1月前
|
开发者
HTTP 协议请求方法的发展历程
【10月更文挑战第21天】
|
1月前
|
安全
HTTP 协议的请求方法
【10月更文挑战第21天】
|
1月前
|
缓存 安全 前端开发
HTTP 协议的请求方法在实际应用中有哪些注意事项?
【10月更文挑战第29天】HTTP协议的请求方法在实际应用中需要根据具体的业务场景和需求,合理选择和使用,并注意各种方法的特点和限制,以确保网络通信的安全、高效和数据的一致性。
|
1月前
|
安全 API 数据安全/隐私保护
常见的HTTP请求方法
【10月更文挑战第25天】这些HTTP请求方法共同构成了客户端与服务器之间交互的基础,使得客户端能够根据不同的需求对服务器资源进行各种操作。在实际应用中,开发者需要根据具体的业务场景和资源的性质选择合适的请求方法来实现客户端与服务器之间的有效通信。
|
1月前
|
存储 安全 网络协议
HTTP 请求方法
【10月更文挑战第22天】HTTP 请求方法
50 2