Python使用——发送Get请求,模拟http请求 进行SSH连接服务器

在这里插入图片描述

前言

本篇博客是python开发的使用案例博客,结合一些具体的案例进行阐述,本篇博客主要内容是使用Python发送Get请求,模拟http请求,后面可以搞个爬虫出来,另外就是如何使用Python进行SSH连接服务器。

其他相关的博客文章如下:

  • 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 datetimeurl=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)

在这里插入图片描述

案例2:间隔一定时间,轮流进行get请求,总共2个

# encoding:utf-8
import requests
import time
from datetime import datetimereq3 = "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链接

在这里插入图片描述

建立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 clientif __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 classdef _out_handle(self):import ctypesreturn ctypes.windll.kernel32.GetStdHandle(self.STD_OUTPUT_HANDLE)out_handle = property(_out_handle)def _set_color(self, code):import ctypes# Constants from the Windows APIself.STD_OUTPUT_HANDLE = -11hdl = 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.hSTD_INPUT_HANDLE = -10STD_OUTPUT_HANDLE = -11STD_ERROR_HANDLE = -12# wincon.hFOREGROUND_BLACK = 0x0000FOREGROUND_BLUE = 0x0001FOREGROUND_GREEN = 0x0002FOREGROUND_CYAN = 0x0003FOREGROUND_RED = 0x0004FOREGROUND_MAGENTA = 0x0005FOREGROUND_YELLOW = 0x0006FOREGROUND_GREY = 0x0007FOREGROUND_INTENSITY = 0x0008 # foreground color is intensified.BACKGROUND_BLACK = 0x0000BACKGROUND_BLUE = 0x0010BACKGROUND_GREEN = 0x0020BACKGROUND_CYAN = 0x0030BACKGROUND_RED = 0x0040BACKGROUND_MAGENTA = 0x0050BACKGROUND_YELLOW = 0x0060BACKGROUND_GREY = 0x0070BACKGROUND_INTENSITY = 0x0080 # background color is intensified.levelno = args[1].levelnoif (levelno >= 50):color = BACKGROUND_YELLOW | FOREGROUND_RED | FOREGROUND_INTENSITY | BACKGROUND_INTENSITYelif (levelno >= 40):color = FOREGROUND_RED | FOREGROUND_INTENSITYelif (levelno >= 30):color = FOREGROUND_YELLOW | FOREGROUND_INTENSITYelif (levelno >= 20):color = FOREGROUND_GREENelif (levelno >= 10):color = FOREGROUND_MAGENTAelse:color = FOREGROUND_WHITEargs[0]._set_color(color)ret = fn(*args)args[0]._set_color(FOREGROUND_WHITE)# print "after"return retreturn newdef add_coloring_to_emit_ansi(fn):# add methods we need to the classdef new(*args):levelno = args[1].levelnoif (levelno >= 50):color = '\x1b[31m' # redelif (levelno >= 40):color = '\x1b[31m' # redelif (levelno >= 30):color = '\x1b[33m' # yellowelif (levelno >= 20):color = '\x1b[32m' # greenelif (levelno >= 10):color = '\x1b[35m' # pinkelse:color = '\x1b[0m' # normaltry:args[1].msg = color + args[1].msg + '\x1b[0m' # normalexcept Exception as e:pass# print "after"return fn(*args)return newimport platformif platform.system() == 'Windows':# Windows does not support ANSI escapes and we are using API calls to set the console colorlogging.StreamHandler.emit = add_coloring_to_emit_windows(logging.StreamHandler.emit)
else:# all non-Windows platforms are supporting ANSI escapes so we use themlogging.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连接服务器;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/234858.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot-监听Nacos动态修改日志级别

目录 一、pom文件 二、项目配置文件 三、日志配置文件 四、日志监听类 五、日志动态修改服务类 线上系统的日志级别一般都是 INFO 级别,有时候需要查看 WARN 级别的日志,所以需要动态修改日志级别。微服务项目中使用 Nacos 作为注册中心&#xff0c…

osgSim扩展库

1.osgSim扩展库 osgSim是0SG的一个工具箱(NodeKit),提供了仿真系统中以及染OpenFlight 数据库所需的特殊渲染功能,如地形高程图、光点节点和 DOF 变换节点等。 下面对一些可能会用到的类进行简单介绍。 1.1 DOFTransform类 osgSim::DOFTransform类是对 …

进程间通信基础知识【Linux】——上篇

目录 一,理解进程之间的通信 1. 进程间通信目的 2. 进程间通信的技术背景 3,常见的进程间通信 二,管道 1. 尝试建立一个管道 管道的特点: 管道提供的访问控制: 2. 扩展:进程池 阶段一&#xff1a…

Openwrt linux 启动流程

OpenWRT 启动流程 内核启动过程:【/init/mian.c】 Uboot --> start_kernel() --> rest_init() --> kernel_thread(kernel_init) --> kernel_init_freeable() 初始化过程: Linux Kernel(kernel_init) --> /etc/preinit --> /sbin/in…

基于SSM搭建系统

原理 SSM集成 SpringSpringMvcMybatis集成 框架集成核心,如果你的项目中,用到了Spring框架,那么其他框架主要就是和Spring集成; 和Spring集成的核心思路: 把当前框架的核心类,交给Spring管理&#xff08…

GPU逻辑管线

文章目录 前言一、渲染流水线二、英伟达显卡简化概念图(GPU)1、我们的Shader会调用英伟达提供的 API2、调用API后,把Shader用到的指令存储在Pushbuffer中3、然后图元分配器,会把 模型数据 和 Shader 指令传入GPU中4、这个SM是每个…

设计模式之装饰模式(2)--有意思的想法

目录 背景概述概念角色 基本代码分析❀❀花样重难点聚合关系认贼作父和认孙做父客户端的优化及好处继承到设计模式的演变过程 总结 背景 这是我第二次写装饰模式,这一次是在上一次的基础上进一步探究装饰模式,这一次有了很多新的感受和想法,也…

C++——AVL树

作者:几冬雪来 时间:2023年11月30日 内容:C板块AVL树讲解 目录 前言: AVL树与搜索二叉树之间的关系: AVL树概念: 插入结点: 平衡因子: 旋转: 双旋: …

RabbitMQ登录控制台显示--你与此网站的连接不是私密连接

一、RabbitMQ默认账号 Note: The default administrator username and password are guest and guest. 注:默认管理员用户名和密码为guest和guest 二、自己修改过或者注册的情况 由于本人之前用过,注册过账号密码,在登录时,用户名账号有异常出现以下问题 解决方案: 因为我的rab…

高端制造业中的通用性超精密3D光学测量仪器

超精密光学3D测量仪器具有高精度、自动化程度高、实时反馈和范围广等优势。它能够实现微米级别的精确测量,能够精确测量产品的尺寸、形状和表面粗糙度等,具有广泛的应用价值和重要意义。 超精密光学3D测量仪器配备多种传感器、控制器和计算机系统&#…

虚拟数据生成_以Python为工具

生成虚拟数据_以Python为工具 生成虚拟数据技术在现实生活中具有多个重要的应用领域。它为数据隐私保护、机器学习算法开发、数据处理和可视化等方面提供了实用且有价值的解决方案。尤其是能满足定制化需求的虚拟数据,在预期的方向上让数据定向随机。 &#x1f339…

ODBC一般操作

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么?二、使用步骤 1.引入库2.读入数据总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:…