使用Python 脚自动化操作服务器配置

news2025/2/22 8:33:16

 有几十台特殊的服务器,没有合适的批量工具只能手动,要一个一个进行点击设置很耗费时间呀\~,使用 Python 的简单脚本,即可模拟鼠标键盘进行批量作业


01

自动化示例

以某服务器中的添加用户权限为例,演示过程皆未触碰鼠标和键盘

图片

图片


02

Pyautogui 模块介绍

开源模块

https://github.com/asweigart/pyautogui

官方文档

Welcome to PyAutoGUI’s documentation! — PyAutoGUI documentation

图片

图片

图片

图片


03

编写代码

1、环境安装(Windows 10)

  • 安装编译环境 Python 3.9(Python官网下载安装包)
  • 安装自动化模块 +

【检验环境】

在 cmd 下输入与后若无异常,即完成安装(如下GIF所示)

图片

图片

2、代码编写

import pyautogui      # 导入自动化模块


for i in range(1, 200):      # 循环指定次数
    pyautogui.moveTo(500,178,duration = 0.5)        #用 0.5秒的时间将鼠标移动到屏幕上 346,370 的位置
    pyautogui.click()        #左键单击一次
    pyautogui.write("TSE lab")    # 输入指定字符串
  • 文件夹随便一个地方,新建名为 autoClick.py 的文件,并使用编辑器打开(notepad、txt皆可)
  • 开始脚本编写:第一行导入 pyautogui 模块,随后才能使用相关语句
  • 模拟鼠标移动:pyautogui.moveTo(500,178,duration = 0.5)
  • 模拟鼠标点击:pyautogui.click()
  • 模拟键盘输入:pyautogui.write()
  • 循环多次:for i in range(1, 200):
  • 执行脚本,cmd下敲入:python autoClick.py

图片

图片


04

额外要点

1、多服务器匹配操作

 自动化代码我知道了。但执行完一台服务器后,如何让程序识别到下一台并继续操作呢?

操作有很多种,这边举一个简单例子:

  • 将服务器的信息(ip、SN、要定制的字串内容等)收集到一个txt文件,一台服务器一行数据,可以以<空格>分隔
  • 使用下面示例代码,一行一行进行读取服务器的 ip 即可进行操作
global bmc_ip    # 设置全局变量
info=linecache.getline(r'C:\jingwen\machine_info.log',line)    # 按行读取


bmc_ip=info.split()[0]    # 读取行中的第一列数据
......

2、鼠标坐标获取

 我如何知道我要点击的位置,在屏幕上具体的位置信息?

(方式一:微信截图)

图片

图片

(方式二:pyautogui.displayMousePosition())

图片

图片

(方式三:pyautogui.mouseInfo())

图片

图片

3、环境安装(离线)

 指定的机器上没有连接到外部网络,我怎么安装这样的环境?

可以提前下载好相关包放到U盘里,传入到指定的离线环境里进行安装(后面有下载链接)

相关的 pyautogui 包,需要放到 python 安装目录下的 site-packages 文件夹内(比如我的目录为 D:\software\Python39\Lib\site-packages)

图片

图片

  • 离线包链接

链接:百度网盘 请输入提取码

提取码:fzli

图片

图片

4、其他部分模块方法

pyautogui

  • 官方文档:https://pyautogui.readthedocs.io/en/latest/index.html
    
    
    pyautogui.PAUSE = 0.5                                         # 默认每次执行动作后,暂停的秒数
    pyautogui.FAILSAFE =False                                     # 默认True,保护措施,当鼠标的指针在屏幕的最左上方,程序会报错;目的是为了防止程序无法停止
    
    pyautogui.sleep(1)                                            # 睡眠1s,内部调用 time.sleep
    pyautogui.countdown(5)                                        # 倒计时5秒,秒数会打印在同一行
    pyautogui._getNumberToken('2832fdsav')                        # 输出2832。打印字符串起始的数字字符
    
    pyautogui.printInfo()                                         # 输出终端的(平台)(python版本)(pyautogui模块版本)(执行文件路径)(分辨率)(执行时间)信息
           Platform: win32
           Python Version: 3.9.0 (tags/v3.9.0:9cf6752, Oct  5 2020, 15:34:40) [MSC v.1927 64 bit (AMD64)]
           PyAutoGUI Version: 0.9.53
           Executable: D:\software\Python39\python.exe
           Resolution: Size(width=1920, height=1080)
           Timestamp: 2022-10-31 10:36:26.689648

pyautogui 鼠标

pyautogui.click(x,y) # 鼠标点击(x,y),clicks=1 默认点击一次,interval=0.0 默认间隔0秒
pyautogui.rightClick(x,y) # 鼠标右键(x,y)
pyautogui.middleClick(x,y) # 鼠标中键点击(x,y)
pyautogui.doubleClick(x,y) # 鼠标双击(x,y)
pyautogui.tripleClick(x,y) # 鼠标三击(x,y)

pyautogui.scroll(x,y) # 鼠标在(x,y)滚动
pyautogui.scroll(10) # 向上滚动10格
pyautogui.scroll(-10) # 向下滚动10格
pyautogui.mouseDown(x,y,button='left') # 鼠标左键按下
pyautogui.mouseUp(x,y,button='left') # 鼠标左键松开
pyautogui.dragTo(x,y,button='left') # 按住鼠标左键,把目标拖动到(x,y)的位置

pyautogui.displayMousePosition() # 实时显示鼠标的(坐标)和对应(RGB)值
pyautogui.mouseInfo() # 弹出鼠标信息操作框,包含了实时鼠标坐标信息、RGB等内容

pyautogui 键盘

pyautogui.typewrite("hello")                                  # 模拟键盘,输入“Hello”
pyautogui.typewrite(['a','b','c'])                            # 依次输入"a","b","c"
pyautogui.press('enter')                                      # 模拟键盘,按下并松开回车键
pyautogui.hotkey('ctrl', 'v')                                 # 组合按键(Ctrl+V),粘贴功能,按下并松开'ctrl'和'v'按键
pyautogui.keyDown('shift')                                    # 按下`shift`键
pyautogui.keyUp('shift')                                      # 松开`shift`键

pyautogui.isShiftCharacter('$')                               # 返回True。判断当前字符是否是按下Shift后的输出

pyautogui 屏幕

pyautogui.alert('stop')                                      # 出现"stop"的警示框

image=pyautogui.screenshot()                                 # 截取当前屏幕
image=pyautogui.screenshot(region(0,0,300,400))              # region参数,截图区域,由左上角坐标、宽度、高度4个值确定,如果指定区域超出了屏幕范围,超出部分会被黑色填充,默认`None`,截全屏    

x, y = pyautogui.position()                                  # 鼠标当前位置
x, y = pyautogui.size()                                      # 当前屏幕分辨率(无法包括外接显示器在内)  

a = pyautogui.locateOnScreen(r'C:\1.png')                    # 返回图片在当前屏幕上的位置
x, y = pyautogui.center(a)                                   # 获得文件图片在现在的屏幕上面的中心坐标
x, y = pyautogui.locateCenterOnScreen(r'C:\1.png')           # 直接获得中心位置,是上面两行代码的结合
x, y = pyautogui.locateCenterOnScreen(r'C:\1.png',confidence=0.9)      #识别精度:confidence默认为1,绝对匹配。数值越低,匹配越模糊

键盘模拟:支持按键

说明

enter(或return 或 \n)

回车

esc

ESC键

shiftleft, shiftright

左右SHIFT键

altleft, altright

左右ALT键

ctrlleft, ctrlright

左右CTRL键

tab (\t)

TAB键

backspace, delete

BACKSPACE 、DELETE键

pageup, pagedown

PAGE UP 和 PAGE DOWN键

home, end

HOME 和 END键

up, down, left,right

箭头键

f1, f2, f3….

F1…….F12键

volumemute, volumedown,volumeup

有些键盘没有

pause

PAUSE键

capslock, numlock,scrolllock

CAPS LOCK, NUM LOCK, 和 SCROLLLOCK 键

insert

INS或INSERT键

printscreen

PRTSC 或 PRINT SCREEN键

winleft, winright

Win键

command

Mac OS X command键

更多技术文档请访问365文档

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(免费分享)基于springboot,vue社区养老服务管理系统

本课题针对养老机构对养老院日常业务信息管理问题&#xff0c;建立一个社区养老管理平台&#xff0c;基于springboot以及vue框架技术&#xff0c;实现了社区养老管理系统&#xff0c;实现了对养老院的员工、管理员对入住的老人及其健康档案实现信息化管理 获取完整源码&…

基于PHP + MySQL实现的文章内容管理系统源码+数据库,采用前后端分离的模板和标签化方式

文章内容管理系统 dc-article是一个通用的文章内容管理系统&#xff0c;基于开源的caozha-admin开发&#xff0c;采用前后端分离的模板和标签化方式&#xff0c;支持文章内容管理、栏目分类管理、评论管理、友情链接管理、碎片管理、远程图片获取器等功能。可以使用本系统很轻…

sql server 对称加密例子,很好用

-- 创建对称密钥 CREATE MASTER KEY ENCRYPTION BY PASSWORD 输入一个对称密钥; -- 创建证书 CREATE CERTIFICATE MyCertificate WITH SUBJECT 创建一个证书名称; -- 创建对称密钥的加密密钥 CREATE SYMMETRIC KEY MySymmetricKey WITH ALGORITHM AES_128 ENCRY…

静态库的概念及影响

1、目标文件的生成&#xff1a; 由编译器针对源文件编译生成&#xff0c;生成的.o或者.so(动态库)或者.a(静态库)也可以看作是目标文件&#xff1b; 2、静态库的生成&#xff1a; 由给定的一堆目标文件以及链接选项&#xff0c;链接器可以生成两种库&#xff0c;分别是静态库…

Java锁常见面试题

图片引用自&#xff1a;不可不说的Java“锁”事 - 美团技术团队 1 java内存模型 java内存模型(JMM)是线程间通信的控制机制。JMM定义了主内存和线程之间抽象关系。线程之间的共享变量存储在主内存中&#xff0c;每个线程都有一个私有的本地内存&#xff0c;本地内存中存储了该…

PostCSS通过px2rem插件和lib-flexible将px单位转换为rem(root em)单位实现大屏适配

目录 文档postcss中使用postcss-plugin-px2rem安装postcss-plugin-px2rem示例默认配置 webpack中使用postcss-plugin-px2rem项目结构安装依赖文件内容 大屏适配参考文章 文档 类似的插件 postcss-plugin-px2rem https://www.npmjs.com/package/postcss-plugin-px2remhttps://g…

【深度学习基础】Pytorch框架CV开发(2)实战篇

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…

我的大语言模型微调踩坑经验分享

由于 ChatGPT 和 GPT4 兴起&#xff0c;如何让人人都用上这种大模型&#xff0c;是目前 AI 领域最活跃的事情。当下开源的 LLM&#xff08;Large language model&#xff09;非常多&#xff0c;可谓是百模大战。面对诸多开源本地模型&#xff0c;根据自己的需求&#xff0c;选择…

文件夹还在,里面文件没了?问题这样解决

文件夹还在但文件无故消失怎么办&#xff1f;文件的消失对于我们来说可能是个令人沮丧且困惑的问题。有时候&#xff0c;我们可能会发现文件夹依然存在&#xff0c;但其中的文件却消失了。在这篇文章中&#xff0c;我们将探讨为什么电脑文件会无故消失的原因&#xff0c;并提供…

【Kafka】基本概念

文章目录 一、消息队列的流派1.1 有Broker1.1.1 重topic1.1.2 轻topic 1.2 无Broker 二、kafka安装三、kafka基本术语四、发送消息五、消费消息六、单播消息七、多播消息八、查看消费组的详细信息九、主题topic十、分区十一、kafka中消息⽇志⽂件中保存的内容 一、消息队列的流…

微信-Native支付(扫二维码支付)工具类 2023最新保姆教程

0、照着微信开发文档 取到证书、秘钥等 好几个key 1、获取商户号merchantId 账户中心->商户信息->微信支付商户号 3、获取商户证书序列号merchantSerialNumber 账户中心->API安全->API证书管理 5、获取appID 产品中心->AppID账号管理 1、这个链接教你获取各…

1220*2440mm建筑模板木工板:桥梁工程中的覆膜板选择

在桥梁工程中&#xff0c;选择合适的建筑模板木工板至关重要。其中&#xff0c;1220*2440mm规格的建筑模板木工板作为一种常见的选择&#xff0c;特别适用于混凝土工程和桥梁建设。本文将重点介绍这种规格的木工板作为覆膜板在桥梁工程中的应用。 1220*2440mm建筑模板木工板是一…

RISC Zero zkVM架构

1. 引言 RISC Zero zkVM为&#xff1a; 基于 FRI PLONK 构建的采用Von Neumann架构的ZK Machine将RISC-V微控制器 具化为 某基于STARK的证明系统&#xff0c;的微架构和编码机制。 2. Row (Time) Structure 一个cycle对应1个memory transaction&#xff0c;对用户传入的程…

嵌入式Linux HID多指触控/触摸设备报表描述符

这里只做一下简单记录&#xff0c;更为详细的修改流程后续的文章再介绍。 报表描述符 0x05, 0x0D, // Usage Page (Digitizer) 0x09, 0x04, // Usage (Touch Screen) 0xA1, 0x01, // Collection (Application) 0x85, 0x01, // Report ID (1) 0…

jbase实现业务脚本化

经过晚上和早上的努力&#xff0c;终于补上框架最后一块了&#xff0c;业务脚本侦听变化后自动编译jar包和调用&#xff0c;实现维护成本低&#xff0c;开发效率高的框架的基本体系。 实现自动编译jar包的类 package appcode;import org.w3c.dom.Document; import org.w3c.do…

Android 数据恢复的顶级软件分享

人们经常向我们询问有关 Android 数据恢复软件的信息以及它们是否有用。而且&#xff0c;我们给他们讲了两个朋友的故事——凯伦和亚历克斯。他们都丢失了 Android 手机上的一些重要数据。 丢失数据确实是一个令人心碎的时刻&#xff0c;根据丢失的文件&#xff0c;可能会让您…

Linux高级命令(扩展)三

一、date命令 1、date命令的作用 date命令的主要作用&#xff1a;用于获取计算机操作系统的系统时间 2、获取计算机的系统时间 # date 3、定制时间格式 # date "%F %T %Y %m %d %H %M %S" %F : 2020-04-03 %T : 09:45:36 %Y : 年 %m : 月 %d : 日 %H : 小时 %M…

这个超实用的门禁技巧,让办公楼安全更简单高效!

门禁监控是现代社会中不可或缺的一部分&#xff0c;用于确保安全和管理进出某个区域的人员。随着科技的不断发展&#xff0c;门禁监控已经远离了传统的机械锁和钥匙&#xff0c;变得更加智能化和高效。 客户案例 企业办公大楼 无锡某大型企业在其办公大楼内部部署了泛地缘科技…

【机器学习 | PipeLine】机器学习通用管道最佳实践!!(无论什么问题都能套上,确定不来看看?)

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

任正非说:只有“有为”才会“有位”,任何组织只有在流程中创造价值,才可能获得成长的机会。

你好&#xff01;这是华研荟【任正非说】系列的第28篇文章&#xff0c;让我们聆听任正非先生的真知灼见&#xff0c;学习华为的管理思想和管理理念。 一、所有一切要符合未来的作战需要&#xff0c;组织是为了作战而存在的&#xff0c;而不是作战服从组织的。 来源于任正非先生…