再见Xshell、Xftp!Python执行Linux命令、上传下载远程文件
相信大家应该都接触过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下载文件
再见Xshell、Xftp!Python执行Linux命令、上传下载远程文件的更多相关文章
- python执行linux命令的两种方法
python执行linux命令有两种方法: 在此以Linux常用的ls命令为例: 方法一:使用os模块 1 2 3 shell# python >> import os >> ...
- linux系统上传下载命令rz和sz的教程
(一)安装方法汇总(注意:一下命令如果没有权限的需要在每个命令前面加一个sudo) 1.安装方法(推荐) sudo yum install lrzsz 2.在安装Linux系统时选中“DialupNe ...
- linux下常用FTP命令 上传下载文件【转】
1. 连接ftp服务器 格式:ftp [hostname| ip-address]a)在linux命令行下输入: ftp 192.168.1.1 b)服务器询问你用户名和密码,分别输入用户名和相应密码 ...
- 向linux服务器上传下载文件方式收集
向linux服务器上传下载文件方式收集 1. scp [优点]简单方便,安全可靠:支持限速参数[缺点]不支持排除目录[用法] scp就是secure copy,是用来进行远程文件拷贝的.数据传输使用 ...
- 在Windows上使用终端模拟程序连接操作Linux以及上传下载文件
在Windows上使用终端模拟程序连接操作Linux以及上传下载文件 [很简单,就是一个工具的使用而已,放这里是做个笔记.] 刚买的云主机,或者是虚拟机里安装的Linux系统,可能会涉及到在windo ...
- python之实现ftp上传下载代码(含错误处理)
# -*- coding: utf-8 -*- #python 27 #xiaodeng #python之实现ftp上传下载代码(含错误处理) #http://www.cnblogs.com/kait ...
- Linux下不借助工具实现远程linux服务器上传下载文件
# Linux下不借助工具实现远程linux服务器上传下载文件 ## 简介 - Linux下自带ssh工具,可以实现远程Linux服务器的功能- Linux下自带scp工具,可以实现文件传输功能 ## ...
- Xshell5下利用sftp上传下载传输文件
sftp是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.sftp 与 ftp 有着几乎一样的语法和功能.SFTP 为 SSH ...
- SpringMVC文件上传下载(单文件、多文件)
前言 大家好,我是bigsai,今天我们学习Springmvc的文件上传下载. 文件上传和下载是互联网web应用非常重要的组成部分,它是信息交互传输的重要渠道之一.你可能经常在网页上传下载文件,你可能 ...
随机推荐
- Day13_65_线程sleep()方法
线程sleep()方法 * public static void sleep(long millis) throws InterruptedException * Thread.sleep(),该方 ...
- OOP-面向对象(二)
面向对象三大特征: 封装 继承 多态 -封装:对类中成员属性和方法的保护,控制外界对内部成员的访问,修改,删除等操作 私有的: private 在本类内部可以访问,类的外部不可以访问.(python中 ...
- Libraries
Math.ceil() The Math.ceil() function returns the smallest integer greater than or equal to a given n ...
- 02- HTML网页基础知识与浏览器介绍
1.认识网页 网页主要由文字,图像和超链接等元素构成.当然,除了这些元素,网页还可以包含音频,视频,以及flask等. 如图所示就是一个网页: 网页是如何形成的呢? 它是由前端人员写的代码,经过浏览器 ...
- 【golang】golang 相关问题?
1.golang 官网下载很慢: 中科大镜像:http://mirrors.ustc.edu.cn/golang/ 2.go get 下载依赖很慢的问题: https://goproxy.io/zh/ ...
- Python脚本暴力破解FTP口令(ftplib)
目录 判断FTP服务器是否允许匿名登录 暴力破解FTP口令 列出FTP目录内的网页文件 综合 环境:Windows python2.7.15 ftplib模块是python下用于ftp服务的模块 . ...
- 数据链路层协议(Ethernet、IEEE802.3、PPP、HDLC)
目录 数据链路层协议 Ethernet以太网协议 以太网数据帧的封装 IEEE802.3协议 PPP协议 HDLC协议 数据链路层协议 首先Ethernet.IEEE802.3.PPP和HDLC都是数 ...
- 逆向 string.h 函数库 strlen、memchr、strcat 函数
strlen 函数 主要功能:返回字符串的长度 C/C++ 实现: #include <iostream> #include <stdio.h> #include <st ...
- 如何在jQuery的Ajax调用后管理一个重定向请求
1 success:function(data){ 2 if(data.xx == "xx") 3 { 4 //code... 5 window.location.href =&q ...
- zTree增加树形菜单格式
result为json字符串 //展示树形菜单 function showMenuTree(result) { console.log("页面展示函数:"+result); //属 ...