相信你们应该都接触过Linux操做系统(Ubuntu、Centos等),那么在使用的Linux操做系统须要使用一些远程ssh工具,尤为是公网服务器。python
经常使用的ssh工具主要有:Xshell、MobaXterm、Termius等linux
上传文件到远程Linux服务器:Xftp、Filezilla 等shell
这些工具备免费,有收费的。而且价格小贵。今天辰哥就来教你们如何用Python链接远程Linux服务器,实现执行命令和上传文件。这里用到的Python库是Paramiko服务器
核心知识点(亮点):ssh
一、Python链接远程Linux服务器工具
二、执行命令并返回结果操作系统
三、上传文件到远程Linux服务器设计
四、从远程Linux下载文件3d
01 Paramiko库
1.安装paramiko库code
在开始编写代码以前先安装一下Python链接Linux服务器的库,安装命令以下:
#一、安装依赖包 pip install ecdsa pip install Crypto pip install Twisted #二、安装paramiko pip install paramiko
提示:先安装三个依赖库,再安装Paramiko,直接安装Paramiko会报错。
2. paramiko核心组件
SSH组件:SSHClient,做用相似于Linux的ssh命令,用于执行远程命令。
SFTP组 件:SFTPClient,做用相似于Linux的sftp命令,用于文件上传、下载、修改文件权限等。
02 SSHClient
一、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执行代码结果:
二、执行多条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
一、SFTPClient经常使用方法介绍
二、 上传文件到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()
效果以下:
三、从Linux服务器下载文件
辰哥在Linux服务器新建了一个文本文件:Python研究者.txt ,并写入内容
下载文件
localpath2 = "D:/公众号/0603/Python研究者.txt" remotepath2 = "/www/wwwroot/Python研究者.txt" # 执行下载动做 sftp.get(remotepath2, localpath2) # 关闭链接 tran.close()
效果:
04 小结
本文讲解了Paramiko库,并讲解ssh和sftp两大组件,设计的核心知识点(亮点):
一、Python链接远程Linux服务器
二、执行命令并返回结果
三、上传文件到远程Linux服务器
四、从远程Linux下载文件