python自动化运维快速入门,python自动化运维项目

大家好,给大家分享一下python自动化运维需要掌握的技能,很多人还不知道这一点。下面详细解释一下。现在让我们来看看!

Source code download: 本文相关源码

巡检自动化

一、应用自动化

网页应用方面

分为三步:第一步实现网页自动化打开,登录到需巡检的界面,第二步通过截图,保存巡检时状态图,第三步通过接口推送至手机app如企业微信,钉钉等。

网页自动化
准备

第一:selenium环境部署和定位学习:自动化测试——selenium(环境部署和元素定位篇)_selenium实验报告-CSDN博客
第二:selenium使用:自动化测试——selenium(完结篇)_selenium自动化-CSDN博客
第三:快速下载vscode:
VScode快速下载方法和快捷键-CSDN博客
补充:
Microsoft Edge浏览器驱动安装:打开文件所在位置,可以直接看到版本,再到https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver下载对应驱动(接近版本号即可)

打开网页

需要提前完成两步:
第一步:完成python、selenium环境部署
第二步:完成浏览器驱动安装
详见:自动化测试——selenium(环境部署和元素定位篇)_selenium实验报告-CSDN博客

# 1、导包/提供python的库
from time import sleep
from selenium import webdriver

# 2、实例化浏览器对象:类名()
driver = webdriver.Chrome()

# 3、打开网址(此处可以替换你要巡检的网页)
driver.get('https://www.bilibili.com/')

# 4、操作命令插入到这里

# 5、时间轴看效果,等待3秒
sleep(3)

# 6、关闭页面
driver.quit()

截图

使用方法:

driver.get_screenshot_as_file(imgepath)
#参数:
# imagepath:为图片要保存的目录地址及文件名称
#截图方法,建议使用png格式 , ./为当前路径,  ../为上一级路径,如('./info.png')

加入到代码中

# 1、导包/提供python的库
from time import sleep
from selenium import webdriver

# 2、实例化浏览器对象:类名()
driver = webdriver.Chrome()

# 3、打开网址(此处可以替换你要巡检的网页)
driver.get('https://www.bilibili.com/')

# 4、操作命令插入到这里
# 4.1、截图
driver.get_screenshot_as_file('./a.png')
# 5、时间轴看效果
sleep(3)

# 6、关闭页面
driver.quit()

接口推送

企业微信接口文档

图片

在这里插入图片描述

import requests
import base64
import hashlib

# 图片base64码
with open("./a.png", "rb") as f:
    base64_data = base64.b64encode(f.read()).decode()
# base64.b64decode(base64data)
print(base64_data)

# 图片的md5值
file = open("./a.png", "rb")
md = hashlib.md5()
md.update(file.read())
res1 = md.hexdigest()
print(res1)

# 企业微信机器人发送消息
url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=f6e7fcfd-ef6c-4145-88ee-3d2eeb3ccXXX"
headers = {"Content-Type": "text/plain"}
data = {
    "msgtype": "image",
    "image": {
        "base64": base64_data,
        "md5": res1
    }
}
r = requests.post(url, headers=headers, json=data)
print(r.text)

插曲:出现如下报错【TypeError:Object of type bytes is not JSON】
在这里插入图片描述
解决方法如下:添加了.decode()
在这里插入图片描述

借鉴的文章:通过python爬虫爬取图片,并通过企业微信机器人发送图片至企业微信群_爬企业微信图片-CSDN博客,不要轻易运行,不然很容易尴尬

插曲2:
在这里插入图片描述
谷歌浏览器的驱动有问题,重装新版的谷歌浏览器就可以解决,下载对应的驱动

插曲3:
在这里插入图片描述
将谷歌浏览器的驱动放到python的目录下解决

文本

通过企业微信接口文档-发送文本写出data={ }部分的信息

import requests

# 10、企业微信机器人发送消息:文本消息
url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=1bd9d632-1f3b-445d-98e8-429a1d7415ca"
headers = {"Content-Type": "text/plain"}   
data = {
    "msgtype": "text",
    "text": {
        "content" : "监控平台界面:正常标准为无异常告警"
    }
}
r = requests.post(url, headers=headers)

print(r.text)

存在报错
在这里插入图片描述
查询后得知

import requests
# 10、企业微信机器人发送消息:文本消息
url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=1bd9d632-1f3b-445d-98e8-429a1d7415xx"
headers = {"Content-Type": "text/plain"}   
data = {
    "msgtype": "text",
    "text": {
        "content" : "监控平台界面:正常标准为无异常告警"
    }
}
r = requests.post(url,headers=headers,json=data,verify=False)#企业微信群机器人的消息虽然是“text”类型的,但是post发送过去的头部是“application/json”,是json格式的
print(r.text)

成功发送
在这里插入图片描述

启动脚本

一、bat写法

@C:\Users\18826\AppData\Local\Programs\Python\Python38\python.exe C:\Users\18826\Desktop\patrol\renwu.py %*

上述路径是自身py所在的文件夹决定的,如下图
在这里插入图片描述

二、window自带的定时任务,需要注意以下更改点
在这里插入图片描述

遇到问题
  1. 执行后报错
    在这里插入图片描述
    解决方法
    在这里插入图片描述

以上满足常规巡检


以下是对维格表尝试登录,但是失败的案例

网页操作

若需对网页进行操作,需学习:
1、利用元素定位进行网页操作
2、了解浏览器、键盘、鼠标操作
详见:登录 - 企业微信开发者中心

常用命令如下:

driver.maximize_window()  # 最大化浏览器

加入到代码中

# 1、导包/提供python的库
from time import sleep
from selenium import webdriver

# 2、实例化浏览器对象:类名()
driver = webdriver.Chrome()

# 3、打开网址(此处可以替换你要巡检的网页)
driver.get('https://www.bilibili.com/')

# 4、操作命令插入到这里
# 4.1、截图
driver.maximize_window()  # 最大化浏览器

# 5、时间轴看效果
sleep(3)

# 6、关闭页面
driver.quit()

账号密码

此处引入登录维格表,截图发群里通知人执行工作

插曲1:
在这里插入图片描述
4.4.3版本无法使用_by_命令,改成4.1.0

pip uninstall selenim
pip install selenim==4.1.0

在这里插入图片描述
插曲2:无法定位元素的报错
在这里插入图片描述
是由于账号密码界面需要切换,引入鼠标点击

# 定位目标
ele = driver.find_element_by_xpath('//*[@id="VIKA_LOGIN"]/div[1]/div/button/span')
# 实例化 鼠标对象
action = ActionChains(driver)
# 鼠标单击
action.click(ele)
# 鼠标执行操作!!!不执行没效果
action.perform()

顺利切换到如下界面
在这里插入图片描述
再通过元素定位法
在这里插入图片描述

# 5.4、输入账号密码
ele = driver.find_element_by_xpath('//*[@id="VIKA_LOGIN_PHONE_INPUT"]')
ele.send_keys('18826227807')
ele = driver.find_element_by_xpath('//*[@id="VIKA_LOGIN_PASSWORD_INPUT"]')
ele.send_keys('Stqer686')

最后,点击确认
在这里插入图片描述

# 5.5、点击
# 定位目标
ele = driver.find_element_by_xpath('//*[@id="VIKA_LOGIN"]/div[1]/div/button/span')
# 实例化 鼠标对象
action = ActionChains(driver)
# 鼠标单击
action.click(ele)
# 鼠标执行操作!!!不执行没效果
action.perform()

但是,最后维格表有防范机制,点击确认后,还是不算登录成功,哭哭

二、整体代码

巡检
# 1、导包/提供python的库
from time import sleep
from selenium import webdriver

# 2、实例化浏览器对象:类名()
driver = webdriver.Chrome()

# 3、打开网址(此处可以替换你要巡检的网页)
driver.get('http://172.16.1.33:3000/d/WojOgXTmk/00-gao-jing-zhong-xin?orgId=1&refresh=5s')

# 4、时间轴看效果
sleep(6)

# 5、操作命令插入到这里
driver.get_screenshot_as_file('./a.png')  #截图
driver.maximize_window()  # 最大化浏览器


# 6、关闭页面
driver.quit()

import requests
import base64
import hashlib

# 7、图片base64码:提供给企业微信发送图片信息所需
with open("./a.png", "rb") as f:
    base64_data = base64.b64encode(f.read()).decode()
# base64.b64decode(base64data)
print(base64_data)

# 8、图片的md5值
file = open("./a.png", "rb")
md = hashlib.md5()
md.update(file.read())
res1 = md.hexdigest()
print(res1)

# 9、企业微信机器人发送消息:提供给企业微信发送图片信息所需
url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=1bd9d632-1f3b-445d-98e8-429a1d7415xx"
headers = {"Content-Type": "text/plain"}
data = {
    "msgtype": "image",
    "image": {
        "base64": base64_data,
        "md5": res1
    }
}
r = requests.post(url, headers=headers, json=data)
print(r.text)



维格表
# 1、导包/提供python的库
from time import sleep
from selenium import webdriver
from selenium.webdriver import ActionChains

# 2、实例化浏览器对象:类名()
driver = webdriver.Chrome()

# 3、打开网址(此处可以替换你要巡检的网页)
driver.get('https://vika.cn/workbench/mirPTLa3fERa5Vt3Jt/dstyWW2rd6RgoKBxml/viwPVtNmkrHSC')

# 4、时间轴看效果
sleep(5)

# 5、操作命令插入到这里
# 5.1、最大化
driver.maximize_window()  # 最大化浏览器
# 5.2、截图
driver.get_screenshot_as_file('./a.png') 
# 5.3、鼠标单击切换到账号密码登录界面
# 5.3.1、点击“手机/邮件登录”按钮
# 定位目标
ele = driver.find_element_by_xpath('//*[@id="VIKA_LOGIN"]/div[1]/div/button/span')
# 实例化 鼠标对象
action = ActionChains(driver)
# 鼠标单击
action.click(ele)
# 鼠标执行操作!!!不执行没效果
action.perform()
# 5.3.2、点击“密码登录”按钮
# 定位目标
ele = driver.find_element_by_xpath('//*[@id="VIKA_CHANGE_MODE_BTN"]/span')
# 实例化 鼠标对象
action = ActionChains(driver)
# 鼠标单击
action.click(ele)
# 鼠标执行操作!!!不执行没效果
action.perform()
# 5.4、输入账号密码
ele = driver.find_element_by_xpath('//*[@id="VIKA_LOGIN_PHONE_INPUT"]')
ele.send_keys('18826227807')
ele = driver.find_element_by_xpath('//*[@id="VIKA_LOGIN_PASSWORD_INPUT"]')
ele.send_keys('Stqer686')
# 5.5、点击“确认”按钮
# 定位目标
ele = driver.find_element_by_xpath('//*[@id="VIKA_LOGIN"]/div[1]/div/button/span')
# 实例化 鼠标对象
action = ActionChains(driver)
# 鼠标单击
action.click(ele)
# 鼠标执行操作!!!不执行没效果
action.perform()
# 6、时间轴看效果
sleep(20)


# 7、关闭页面
driver.quit()

import requests
import base64
import hashlib

# 8、图片base64码:提供给企业微信发送图片信息所需
with open("./a.png", "rb") as f:
    base64_data = base64.b64encode(f.read()).decode()
# base64.b64decode(base64data)
print(base64_data)

# 9、图片的md5值
file = open("./a.png", "rb")
md = hashlib.md5()
md.update(file.read())
res1 = md.hexdigest()
print(res1)

# 10、企业微信机器人发送消息:提供给企业微信发送图片信息所需
url = "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=1bd9d632-1f3b-445d-98e8-429a1d7415ca"
headers = {"Content-Type": "text/plain"}
data = {
    "msgtype": "image",
    "image": {
        "base64": base64_data,
        "md5": res1
    }
}
r = requests.post(url, headers=headers, json=data)
print(r.text)


  • 19
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值