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






相关文章
|
14天前
|
Java
java原生发送http请求
java原生发送http请求
|
21天前
|
网络协议 Linux iOS开发
推荐:实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求
推荐:实现RTSP/RTMP/HLS/HTTP协议的轻量级流媒体框架,支持大并发连接请求
48 1
|
14天前
|
安全 数据库 C++
Python Web框架比较:Django vs Flask vs Pyramid
【4月更文挑战第9天】本文对比了Python三大Web框架Django、Flask和Pyramid。Django功能全面,适合快速开发,但学习曲线较陡;Flask轻量灵活,易于入门,但默认配置简单,需自行添加功能;Pyramid兼顾灵活性和可扩展性,适合不同规模项目,但社区及资源相对较少。选择框架应考虑项目需求和开发者偏好。
|
4天前
|
安全 Java 网络安全
Servlet 教程 之 Servlet 客户端 HTTP 请求 2
Servlet教程介绍了如何在Servlet中处理HTTP请求,包括获取Cookie、头信息、参数、Session等。方法如:`getCookies()`、`getAttributeNames()`、`getHeaderNames()`、`getParameterNames()`等。还能获取身份验证类型、字符编码、MIME类型、请求方法、远程用户信息、URL路径、安全通道状态以及请求内容长度等。此外,可通过`getSession()`创建或获取Session,并以`Map`形式获取参数。
19 8
|
4天前
|
数据挖掘 API 数据安全/隐私保护
python请求模块requests如何添加代理ip
python请求模块requests如何添加代理ip
|
7天前
|
安全 网络安全 开发工具
对象存储oss使用问题之flutter使用http库进行post请求文件上传返回400如何解决
《对象存储OSS操作报错合集》精选了用户在使用阿里云对象存储服务(OSS)过程中出现的各种常见及疑难报错情况,包括但不限于权限问题、上传下载异常、Bucket配置错误、网络连接问题、跨域资源共享(CORS)设定错误、数据一致性问题以及API调用失败等场景。为用户降低故障排查时间,确保OSS服务的稳定运行与高效利用。
21 1
|
18天前
|
网络协议 安全 Python
python监听连接请求
【4月更文挑战第5天】本教程介绍了网络编程中服务器监听连接请求的关键步骤。首先,理解监听是服务器在特定端口等待客户端连接的基本概念。接着,设置监听涉及创建套接字、绑定地址和端口,以及开始监听。提供了一个Python示例,展示如何使用socket库实现监听。注意点包括异常处理、并发处理和安全性考虑。学习后,读者能掌握基础的监听连接请求代码编写。
|
21天前
|
存储 监控 异构计算
【Python】GPU内存监控脚本
【Python】GPU内存监控脚本
|
1月前
|
JSON 前端开发 数据格式
糊涂工具类真是场景下请求http接口的案例
糊涂工具类真是场景下请求http接口的案例
21 0
|
1月前
|
数据采集 缓存 前端开发
http和https请求服务器的时候在请求头部分都带什么到服务器呢?
HTTP和HTTPS请求头基本结构相似,HTTPS多了一层SSL/TLS加密。常见请求头如Accept(指定内容类型)、Authorization(身份验证)、Cookie(会话跟踪)、User-Agent(标识用户代理)等。HTTPS特有的头包括Upgrade-Insecure-Requests(升级到HTTPS)、Strict-Transport-Security(强制使用HTTPS)、Sec-Fetch-*(安全策略)和X-Content-Type-Options、X-Frame-Options等(增强安全性)。实际应用中,请求头会根据需求和安全策略变化。
20 0