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

简介: 相信大家应该都接触过Linux操作系统(Ubuntu、Centos等),那么在使用的Linux操作系统需要使用一些远程ssh工具,尤其是公网服务器。常用的ssh工具主要有:Xshell、MobaXterm、Termius等上传文件到远程Linux服务器:Xftp、Filezilla 等这些工具有免费,有收费的。并且价格小贵。今天辰哥就来教大家如何用Python连接远程Linux服务器,实现执行命令和上传文件。这里用到的Python库是**Paramiko**

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

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

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

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

核心知识点(亮点):

1、Python连接远程Linux服务器

2、执行命令并返回结果

3、上传文件到远程Linux服务器

4、从远程Linux下载文件

01 Paramiko库

1.安装paramiko库

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

#1、安装依赖包
pip install ecdsa
pip install Crypto
pip install Twisted
#2、安装paramiko
pip install paramiko

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

2. paramiko核心组件

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

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

02 SSHClient

1、SSHClient常用方法介绍

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

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

执行linux命令,如:ls

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

xshell返回结果:

Python执行代码结果:

2、执行多条Linux命令

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

错误的方式

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

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

Python代码执行的结果

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

正确的方式:

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

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

03 SFTPClient

1、SFTPClient常用方法介绍

2、 上传文件到Linux

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

连接Linux服务器

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

上传文件

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

效果如下:

3、从Linux服务器下载文件

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

下载文件

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

效果:

04 小结

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

1、Python连接远程Linux服务器

2、执行命令并返回结果

3、上传文件到远程Linux服务器

4、从远程Linux下载文件

相关文章
|
4天前
|
安全 Linux 数据安全/隐私保护
python知识点100篇系列(15)-加密python源代码为pyd文件
【10月更文挑战第5天】为了保护Python源码不被查看,可将其编译成二进制文件(Windows下为.pyd,Linux下为.so)。以Python3.8为例,通过Cython工具,先写好Python代码并加入`# cython: language_level=3`指令,安装easycython库后,使用`easycython *.py`命令编译源文件,最终生成.pyd文件供直接导入使用。
python知识点100篇系列(15)-加密python源代码为pyd文件
|
9天前
|
Linux 区块链 Python
Python实用记录(十三):python脚本打包exe文件并运行
这篇文章介绍了如何使用PyInstaller将Python脚本打包成可执行文件(exe),并提供了详细的步骤和注意事项。
22 1
Python实用记录(十三):python脚本打包exe文件并运行
|
2天前
|
Java Python
> python知识点100篇系列(19)-使用python下载文件的几种方式
【10月更文挑战第7天】本文介绍了使用Python下载文件的五种方法,包括使用requests、wget、线程池、urllib3和asyncio模块。每种方法适用于不同的场景,如单文件下载、多文件并发下载等,提供了丰富的选择。
|
3天前
|
数据安全/隐私保护 流计算 开发者
python知识点100篇系列(18)-解析m3u8文件的下载视频
【10月更文挑战第6天】m3u8是苹果公司推出的一种视频播放标准,采用UTF-8编码,主要用于记录视频的网络地址。HLS(Http Live Streaming)是苹果公司提出的一种基于HTTP的流媒体传输协议,通过m3u8索引文件按序访问ts文件,实现音视频播放。本文介绍了如何通过浏览器找到m3u8文件,解析m3u8文件获取ts文件地址,下载ts文件并解密(如有必要),最后使用ffmpeg合并ts文件为mp4文件。
|
6天前
|
Linux Shell 数据库
Linux文件查找新姿势:总有一种你没见过
文件查找是Linux用户提升工作效率的关键技能。本文介绍了几种不常见的文件查找方法,包括使用`find`结合`column`美化输出、利用`locate`和`mlocate`快速查找、编写Shell脚本自动化任务、使用现代工具`fd`以及结合`grep`和`rg`进行内容搜索。此外,还推荐了几款图形界面搜索工具。掌握这些技巧,让你的文件查找更加高效便捷。
28 2
|
9天前
|
JSON 数据格式 Python
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
这篇文章介绍了一个Python脚本,用于统计TXT或JSON文件中特定单词的出现次数。它包含两个函数,分别处理文本和JSON文件,并通过命令行参数接收文件路径、目标单词和文件格式。文章还提供了代码逻辑的解释和示例用法。
22 0
Python实用记录(十四):python统计某个单词在TXT/JSON文件中出现的次数
|
9天前
|
Python
Python实用记录(十二):文件夹下所有文件重命名以及根据图片路径保存到新路径下保存
这篇文章介绍了如何使用Python脚本对TTK100_VOC数据集中的JPEGImages文件夹下的图片文件进行批量重命名,并将它们保存到指定的新路径。
24 0
|
11天前
|
Linux 数据安全/隐私保护 Windows
命令方式:window向linux传文件
【10月更文挑战第6天】本文介绍了如何在Linux系统中通过命令`ip a`获取IP地址,并在Windows系统下使用CMD命令行工具和SCP命令实现文件传输。示例展示了如何将D盘中的`mm.jar`文件上传至IP地址为192.168.163.122的Linux系统的/up/目录下,最后在Linux系统中确认文件传输结果。
167 65
|
3天前
|
安全 Linux
Linux系统之lsof命令的基本使用
【10月更文挑战第14天】Linux系统之lsof命令的基本使用
25 2
Linux系统之lsof命令的基本使用