【测试配合运维】使用python-paramiko库开发连接Linux实现自动化命令执行与文件上传下载脚本,附上代码和代码解释

运维那边有需求,找到测试部需要测试部提供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 

本篇完结

 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现远程控制功能需要使用网络编程,Python中常用的网络编程模块有socket和paramiko,其中socket是一个底层的网络通信接口,而paramiko则是一个高级的SSH2协议,可以用于远程控制Linux服务器。 下面分别介绍一下如何实现命令执行文件上传和文件下载的功能: 1. 命令执行 使用socket模块可以很方便地实现命令执行的功能,具体代码如下: ```python import socket # 定义要执行命令 command = "ls -l" # 创建socket连接 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.connect(('remote_host', 8888)) # 发送命令并接收返回结果 s.send(command.encode()) result = s.recv(1024).decode() # 输出结果 print(result) # 关闭连接 s.close() ``` 在上面的代码中,我们首先定义了要执行命令,然后创建了一个socket连接,并向远程主机发送命令远程主机接收到命令执行,并将结果返回给客户端,客户端再将结果输出。 2. 文件上传 文件上传需要使用paramiko模块代码如下: ```python import paramiko # 创建SSH客户端 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('remote_host', username='username', password='password') # 创建SFTP客户端 sftp = ssh.open_sftp() # 上传文件到远程主机 sftp.put('local_file_path', 'remote_file_path') # 关闭SFTP和SSH连接 sftp.close() ssh.close() ``` 在上面的代码中,我们首先创建了一个SSH客户端,并使用用户名和密码进行登录。然后创建了一个SFTP客户端,使用put方法将本地文件上传远程主机,最后关闭SFTP和SSH连接。 3. 文件下载 文件下载也需要使用paramiko模块代码如下: ```python import paramiko # 创建SSH客户端 ssh = paramiko.SSHClient() ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) ssh.connect('remote_host', username='username', password='password') # 创建SFTP客户端 sftp = ssh.open_sftp() # 下载文件到本地 sftp.get('remote_file_path', 'local_file_path') # 关闭SFTP和SSH连接 sftp.close() ssh.close() ``` 在上面的代码中,我们同样创建了一个SSH客户端,并使用用户名和密码进行登录。然后创建了一个SFTP客户端,使用get方法将远程主机上的文件下载到本地,最后关闭SFTP和SSH连接。 需要注意的是,以上代码仅为示例代码,实际使用时还需要进行异常处理等操作。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值