文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

再见Xshell、Xftp!Python执行Linux命令、上传下载远程文件

2024-12-03 03:51

关注

大家好,我是辰哥

相信大家应该都接触过Linux操作系统(Ubuntu、Centos等),那么在使用的Linux操作系统需要使用一些远程ssh工具,尤其是公网服务器。

常用的ssh工具主要有:Xshell、MobaXterm、Termius等

上传文件到远程Linux服务器:Xftp、Filezilla 等

这些工具有免费,有收费的。并且价格小贵。今天辰哥就来教大家如何用Python连接远程Linux服务器,实现执行命令和上传文件。这里用到的Python库是Paramiko

核心知识点(亮点):

Python连接远程Linux服务器

执行命令并返回结果

上传文件到远程Linux服务器

从远程Linux下载文件

01Paramiko库

1.安装paramiko库

在开始编写代码之前先安装一下Python连接Linux服务器的库,安装命令如下:

  1. #1、安装依赖包 
  2. pip install ecdsa 
  3. pip install Crypto 
  4. pip install Twisted 
  5. #2、安装paramiko 
  6. pip install paramiko 

提示:先安装三个依赖库,再安装Paramiko,直接安装Paramiko会报错。

2.paramiko核心组件

SSH组件:SSHClient,作用类似于Linux的ssh命令,用于执行远程命令。

SFTP组件:SFTPClient,作用类似于Linux的sftp命令,用于文件上传、下载、修改文件权限等。

02SSHClient

1、SSHClient常用方法介绍

这里辰哥以自己的远程服务器为例给大家演示,首先先连接服务器

  1. import paramiko 
  2. # ip、用户名、密码 
  3. ip = "远程Linux的IP地址" 
  4. port = 22 
  5. user = "root" 
  6. password = "密码" 
  7.  
  8. # 创建SSHClient 实例对象 
  9. ssh = paramiko.SSHClient() 
  10. # 调用方法,表示没有存储远程机器的公钥,允许访问 
  11. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy()) 
  12. # 连接远程机器,地址,端口,用户名密码 
  13. ssh.connect(ip, port, userpassword, timeout=10) 

执行linux命令,如:ls

  1. # 输入linux命令 
  2. command1 = "ls" 
  3. ssh.exec_command(command1) 
  4. # stdout 为正确输出,stderr为错误输出 
  5. stdin, stdout, stderr = ssh.exec_command(command2) 
  6. # 输出命令执行结果 
  7. result = stdout.read() 
  8. print(result) 

xshell返回结果:

Python执行代码结果:

2、执行多条Linux命令

上面的案例只是执行一条Linux命令,在实际应用中往往需要执行2条或者2条以上的Linux,下面演示如何执行多条命令

错误的方式:

  1. # 输入linux命令 
  2. command1 = "cd /www/wwwroot" 
  3. command2 = "ls" 
  4. ssh.exec_command(command1) 
  5. stdin, stdout, stderr = ssh.exec_command(command2) 
  6. # 输出命令执行结果 
  7. result = stdout.read() 
  8. print(result) 

上面的命令是先执行:cd /www/wwwroot ,进入到wwwroot,再查看里面的文件夹,下面是xshell里面执行的结果。

Python代码执行的结果:

可以看到结果和之前的一样,所以这种方式是错误(辰哥一开始也是这样干的,这里就给大家提个醒)

正确的方式:

  1. # 输入linux命令 
  2. command = "cd /www/wwwroot ;ls" 
  3. stdin, stdout, stderr = ssh.exec_command(command) 
  4. # 输出命令执行结果 
  5. result = stdout.read() 
  6. ## bytes 转 str 
  7. result = str(result) 
  8. result = result.split('\\n'
  9. for i in result: 
  10.      print(i) 

直接在用;把多条命令隔开即可,转为str后,通过\\n去分割结果,按行输出

03SFTPClient

1、SFTPClient常用方法介绍

2、上传文件到Linux

这里先在本地新建一个文本文件:辰哥.txt ,并在里面输入了一些内容

连接Linux服务器

  1. # 获取Transport实例 
  2. tran = paramiko.Transport(('远程Linux的ip', 22)) 
  3. # 连接SSH服务端,使用password 
  4. tran.connect(username="用户名"password='密码'
  5. # 获取SFTP实例 
  6. sftp = paramiko.SFTPClient.from_transport(tran) 

上传文件

  1. # 设置上传的本地/远程文件路径 
  2. localpath = "D:/公众号/0603/辰哥.txt" 
  3. remotepath = "/www/wwwroot//辰哥.txt" 
  4.  
  5. # 执行上传动作 
  6. sftp.put(localpath, remotepath) 
  7. # 关闭连接 
  8. tran.close() 

效果如下:

3、从Linux服务器下载文件

辰哥在Linux服务器新建了一个文本文件:Python研究者.txt ,并写入内容

下载文件

  1. localpath2 = "D:/公众号/0603/Python研究者.txt" 
  2. remotepath2 = "/www/wwwroot/Python研究者.txt" 
  3. # 执行下载动作 
  4. sftp.get(remotepath2, localpath2) 
  5. # 关闭连接 
  6. tran.close() 

效果:

04小结

本文讲解了Paramiko库,并讲解ssh和sftp两大组件,设计的核心知识点(亮点):

Python连接远程Linux服务器

执行命令并返回结果

上传文件到远程Linux服务器

从远程Linux下载文件

本文转载自微信公众号「Python研究者」,可以通过以下二维码关注。转载本文请联系Python研究者公众号。

 

来源:Python研究者内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯