Python使用——发送Get请求,模拟http请求 & 进行SSH连接服务器 青旅半醒 2024-02-17 12:46 15阅读 0赞 ![在这里插入图片描述][192f94f181e047e7a2c6c34c8dd2031a.png] ## 前言 ## 本篇博客是python开发的使用案例博客,结合一些具体的案例进行阐述,本篇博客主要内容是使用Python发送Get请求,模拟http请求,后面可以搞个爬虫出来,另外就是如何使用Python进行SSH连接服务器。 其他相关的博客文章如下: * [Python开发——工具篇 & Pycharm的相关配置,Python相关操作 & 持续更新][Python_ _ Pycharm_Python_ _] #### 目录 #### * 前言 * 引出 * python发送get请求 * * 案例1:get请求,间隔1分钟查询,if语法打印 * 案例2:间隔一定时间,轮流进行get请求,总共2个 * python进行SSH链接 * * 建立SSH连接核心程序 * 日志打印附件 * 总结 ## 引出 ## -------------------- 1.使用Python发送Get请求,模拟http请求; 2.如何使用Python进行SSH连接服务器; ## python发送get请求 ## ### 案例1:get请求,间隔1分钟查询,if语法打印 ### import requests import time from datetime import datetime url=f'http://x.x.x.x:8082/sn' #格式化输出拼接 snTarget = "S231012J0029" while(True): response = requests.get(url=url) snList = response.json() current_time = datetime.now() if snTarget in snList: print("%s 查询到目标sn" %current_time) else: print("%s 未查到设备sn" %current_time) time.sleep(60) ![在这里插入图片描述][e3af32c9da154597b82d8d2417134c9c.png] ### 案例2:间隔一定时间,轮流进行get请求,总共2个 ### # encoding:utf-8 import requests import time from datetime import datetime req3 = "http://xxxx" req4 = "http://xxxx" reqs = [req3, req4] vers = ["2.0.3", "2.0.4"] url = f'http://x.x.x.x:8082/sn' # 格式化输出拼接 snTarget = "S231012J0029" while (True): response = requests.get(url=url) snList = response.json() current_time = datetime.now() if snTarget in snList: print("%s 查询到目标sn" % current_time) for ver, req in zip(vers, reqs): print("{} 进行版本升级 {}".format(datetime.now(), ver)) # print("send request :", req) resp = requests.get(url=req).json() print(resp) time.sleep(430) else: print("%s 未查到设备sn" % current_time) time.sleep(60) ## python进行SSH链接 ## ![在这里插入图片描述][780ce13f1b73440e9a06bb49743c78a0.png] ### 建立SSH连接核心程序 ### import paramiko from paramiko.client import SSHClient import time import logging import utils.LogUtils # 设置日志日期格式 logging.basicConfig(format='%(asctime)s - %(levelname)s - %(message)s', level=logging.DEBUG) # main主方法 def ssh_hi(client: SSHClient): # 执行命令 stdin, stdout, stderr = \ client.exec_command("grep -E 'RegSWVersion|onResponse' /root/logs/sys-debug.log |grep -v 1.1 | tail -n 1") # 打印命令输出 resp = stdout.read().decode() logging.info(resp) if "2.0.4" in resp: logging.warning("当前版本为2.0.4, 版本改为2.0.3") elif "2.0.3" in resp: logging.warning("当前版本为2.0.3, 版本改为2.0.4") else: logging.warning("需要上位机刷新版本") # 关闭连接 def closeSSH(client: SSHClient): client.close() # 建立连接 def buildSSH(): # 创建SSH客户端 client = paramiko.SSHClient() # 自动添加主机名和密钥到本地的known_hosts文件 client.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 连接SSH服务器 client.connect('ip', port=22, username='username', password='password') return client if __name__ == '__main__': ssh = buildSSH() while(True): ssh_hi(ssh) time.sleep(120) # closeSSH(ssh) ### 日志打印附件 ### #!/usr/bin/env python # encoding: utf-8 import logging # now we patch Python code to add color support to logging.StreamHandler def add_coloring_to_emit_windows(fn): # add methods we need to the class def _out_handle(self): import ctypes return ctypes.windll.kernel32.GetStdHandle(self.STD_OUTPUT_HANDLE) out_handle = property(_out_handle) def _set_color(self, code): import ctypes # Constants from the Windows API self.STD_OUTPUT_HANDLE = -11 hdl = ctypes.windll.kernel32.GetStdHandle(self.STD_OUTPUT_HANDLE) ctypes.windll.kernel32.SetConsoleTextAttribute(hdl, code) setattr(logging.StreamHandler, '_set_color', _set_color) def new(*args): FOREGROUND_BLUE = 0x0001 # text color contains blue. FOREGROUND_GREEN = 0x0002 # text color contains green. FOREGROUND_RED = 0x0004 # text color contains red. FOREGROUND_INTENSITY = 0x0008 # text color is intensified. FOREGROUND_WHITE = FOREGROUND_BLUE | FOREGROUND_GREEN | FOREGROUND_RED # winbase.h STD_INPUT_HANDLE = -10 STD_OUTPUT_HANDLE = -11 STD_ERROR_HANDLE = -12 # wincon.h FOREGROUND_BLACK = 0x0000 FOREGROUND_BLUE = 0x0001 FOREGROUND_GREEN = 0x0002 FOREGROUND_CYAN = 0x0003 FOREGROUND_RED = 0x0004 FOREGROUND_MAGENTA = 0x0005 FOREGROUND_YELLOW = 0x0006 FOREGROUND_GREY = 0x0007 FOREGROUND_INTENSITY = 0x0008 # foreground color is intensified. BACKGROUND_BLACK = 0x0000 BACKGROUND_BLUE = 0x0010 BACKGROUND_GREEN = 0x0020 BACKGROUND_CYAN = 0x0030 BACKGROUND_RED = 0x0040 BACKGROUND_MAGENTA = 0x0050 BACKGROUND_YELLOW = 0x0060 BACKGROUND_GREY = 0x0070 BACKGROUND_INTENSITY = 0x0080 # background color is intensified. levelno = args[1].levelno if (levelno >= 50): color = BACKGROUND_YELLOW | FOREGROUND_RED | FOREGROUND_INTENSITY | BACKGROUND_INTENSITY elif (levelno >= 40): color = FOREGROUND_RED | FOREGROUND_INTENSITY elif (levelno >= 30): color = FOREGROUND_YELLOW | FOREGROUND_INTENSITY elif (levelno >= 20): color = FOREGROUND_GREEN elif (levelno >= 10): color = FOREGROUND_MAGENTA else: color = FOREGROUND_WHITE args[0]._set_color(color) ret = fn(*args) args[0]._set_color(FOREGROUND_WHITE) # print "after" return ret return new def add_coloring_to_emit_ansi(fn): # add methods we need to the class def new(*args): levelno = args[1].levelno if (levelno >= 50): color = '\x1b[31m' # red elif (levelno >= 40): color = '\x1b[31m' # red elif (levelno >= 30): color = '\x1b[33m' # yellow elif (levelno >= 20): color = '\x1b[32m' # green elif (levelno >= 10): color = '\x1b[35m' # pink else: color = '\x1b[0m' # normal try: args[1].msg = color + args[1].msg + '\x1b[0m' # normal except Exception as e: pass # print "after" return fn(*args) return new import platform if platform.system() == 'Windows': # Windows does not support ANSI escapes and we are using API calls to set the console color logging.StreamHandler.emit = add_coloring_to_emit_windows(logging.StreamHandler.emit) else: # all non-Windows platforms are supporting ANSI escapes so we use them logging.StreamHandler.emit = add_coloring_to_emit_ansi(logging.StreamHandler.emit) # log = logging.getLogger() # log.addFilter(log_filter()) # //hdlr = logging.StreamHandler() # //hdlr.setFormatter(formatter()) -------------------- ## 总结 ## 1.使用Python发送Get请求,模拟http请求; 2.如何使用Python进行SSH连接服务器; [192f94f181e047e7a2c6c34c8dd2031a.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/02/06/8c9fbbebb29149a69aec404b178471e7.png [Python_ _ Pycharm_Python_ _]: https://blog.csdn.net/Pireley/article/details/134681447 [e3af32c9da154597b82d8d2417134c9c.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/02/06/d52bfb7586514fb8b1e966e69777f30f.png [780ce13f1b73440e9a06bb49743c78a0.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/02/06/e9b990372bca40f79d9d97b6b75db4b5.png
相关 HTTP请求与响应:使用Java发送GET/POST请求 在Java中,我们可以使用各种库来发送HTTP GET或POST请求。这里我将展示如何使用Java的HttpURLConnection和OkHttp库进行操作。 1. **H 男娘i/ 2024年09月12日 09:00/ 0 赞/ 17 阅读
相关 Python使用——发送Get请求,模拟http请求 & 进行SSH连接服务器 ![在这里插入图片描述][192f94f181e047e7a2c6c34c8dd2031a.png] 前言 本篇博客是python开发的使用案例博客,结合一些具体的案例 青旅半醒/ 2024年02月17日 12:46/ 0 赞/ 16 阅读
相关 前端发送http的get请求 示例代码如下: <!DOCTYPE html> <html> <head> <meta charset="UTF-8" /> 拼搏现实的明天。/ 2022年12月23日 06:46/ 0 赞/ 107 阅读
相关 使用curl模拟服务器http请求 前提 服务器莫名奇妙的挂了,重启之后运行一段时间仍然挂了,为了动态获取服务器状态,需要写一个脚本,动态判断服务状态,不可用时重启服务,记录当时的状态,以便定位问题,同时不 喜欢ヅ旅行/ 2022年11月06日 05:47/ 0 赞/ 268 阅读
相关 Http发送GET/POST请求 package com.webservice.test; import java.io.BufferedReader; import java 落日映苍穹つ/ 2022年09月29日 14:49/ 0 赞/ 243 阅读
相关 Java Http GET POST发送请求 Java Http GET POST发送请求 本文写了1个java 发送GET请求以及2个java 发送POST请求,新手,不喜勿喷! 背景: > 这是一个使用魔 た 入场券/ 2022年08月05日 02:46/ 0 赞/ 312 阅读
相关 http发送get、post请求 发送get、post请求简单举例,代码如下: import com.google.common.base.Stopwatch; import com.goog 深藏阁楼爱情的钟/ 2022年07月14日 02:52/ 0 赞/ 240 阅读
相关 模拟打开浏览器发送http get请求 最近需要完成一个http请求,直接根据URL发送请求,网页做了验证,会重定向。因此需要模拟打开浏览器,绕开网页的验证发送请求,得到网页的源代码。以下是代码实现。 pu 快来打我*/ 2022年07月14日 02:52/ 0 赞/ 174 阅读
相关 Android 发送请求 HTTP GET/POST public class Main extends Activity { private Button btnGet; pri 矫情吗;*/ 2022年06月18日 05:51/ 0 赞/ 231 阅读
还没有评论,来说两句吧...