运维那边有需求,找到测试部需要测试部提供Python文件实现自动化linux命令脚本,并且要求能上传下载文件,和自动化测试同理,都是为了把稳定的业务模块全部自动化了,达到增加效率的目的
话不多说直接开始:
第一步 import paramiko 下载第三方库
第二步封装为类以便后面调用
接下来我每行代码挨个挨个解释
self.ssh = paramiko.SSHClient() 注释:为创建SSHClient实例对象
self.ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 注释:调用方法,标识没有远程机器的公钥,允许访问
ssh.connect(ip, port, name, pwd) 注释:连接远程机器 IP地址,端口,用户名,密码
把要发的linux命令 定义为cmdStr ,self.ssh.exec_command(cmdStr)执行命令,stdout,stderr为正常显示和报错显示 然后封装为execCmd函数 返回出来
最后一个close就是关闭 整个连接(为何要关闭和pymysql事务隔离同理)
第三步,封装为Linux_operation函数为了方便达成 到时候 我们可以直接Linux_operation(“需要执行的命令”) 一个方法处理完,就像直接在 linux终端上执行命令一样,后续把相关参数设定为input变量 放在windows终端命令行(cmd)上 实现工具化也方便
不管开发后端还是开发任何啥东西封装 类 和 函数 千万不要打简省,不然到时候麻烦的是自己
我们测试一下,使用Ps -ef看看效果,直接使用我们封装好的函数 print(Linux_operation("ps -ef"))
那是相当的效果好,一个方法名直接跟操作linux终端效果完全一模一样
好,让我们来测试执行一下 自动化linux安装mysql【博主给运维的真实场景涉及公司内部业务隐私不便展示,所以这儿就随便展示一个自动化安装mysql,而且只要方法定义OK了,无论好难的命令还是运维那边的逻辑,都是运维给你的命令,直接在代码里面挨条 挨条 附上去就行,出现什么问题那都是运维给的命令有问题了,跟咱们无关了,我们只需要管把命令给他执行到linux上】
先看代码
然后看结果
OK 非常好
=========================================================================
额外篇:
实现本地上传文件到linux服务器,和linux服务器讲文件下载到本地
函数像我这样封装就行:
现在开始测试上传到Linux服务器上
上传前
执行代码
查看Linux服务器上的有没有
OK,非常好,有了
再来测试一下 下载
下载前:
执行代码
查看本地上有没有
OK非常好,有了
后面可以自行拓展,根据 Linux终端返回的内容进行判断,然后进行判断后的操作,还有写定时任务在某个时间段去执行命令这些都行
甚至准备后期接入openai 尝试一下 能不能 使用openai来进行 AI 操作 linux
本篇完结