再见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应用非常重要的组成部分,它是信息交互传输的重要渠道之一.你可能经常在网页上传下载文件,你可能 ...
随机推荐
- 0609-搭建ResNet网络
0609-搭建ResNet网络 目录 一.ResNet 网络概述 二.利用 torch 实现 ResNet34 网络 三.torchvision 中的 resnet34网络调用 四.第六章总结 pyt ...
- vue 回顾
①.组件的注册 全局注册: // 注册 Vue.component('my-component', { template: '<div>A custom component!</di ...
- pc/shouji/weixin判断跳转
pc 和 手机端 判断 function IsPC() { var userAgentInfo = navigator.userAgent; var Agents = ["Android&q ...
- hdu4396 多状态spfa
题意: 给你一个图,让你送起点走到终点,至少经过k条边,问你最短路径是多少.... 思路: 把每个点拆成50点,记为dis[i][j] (i 1---50 ,j 1---n); ...
- hdu4861 找规律了
题意: 给你k个球和一个整数p,每个球的价值是 1^i+2^i+...+(p-1)^i (mod p),两个人轮流取球,最后谁的总价值也大谁就赢,问你先手能不能赢. 思路: 一开始 ...
- Python脚本写端口扫描器(socket,python-nmap)
目录 Socket模块编写 扫描给定主机是否开放了指定的端口 python-nmap模块编写 扫描给定ip或给定网段内指定端口是否开放 一个用python写的简单的端口扫描器,python环境为 3. ...
- Day001 电脑常用快捷键
电脑常用快捷键 Ctrl+C 复制 Ctrl+V 粘贴 Ctrl+A 全选 Ctrl+X 剪切 Ctrl+Z 撤销 Ctrl+S 保存 Alt+F4 关闭窗口(英雄联盟选英雄界面可以查看对面阵容(狗头 ...
- VS Code 远程开发
听说有人想用VS Code实现远程开发,今天他来了 Remote Development Always reveal the SSH login terminal, 还可加装免密登录,一键登录尽显奢华 ...
- svn客户端访问失败,错误“请求的名称有效,但是找不到请求的类型”的解决
1.问题描述:visualSVN客户端在其他机子访问出现以下问题(服务端装在我的电脑上,我本机客户端可以正常访问) 2. 原因分析:SVN客户端访问服务器需要输入URL地址,URL地址分为两种方式.一 ...
- JS String总结
String常用总结 1.字符 length属性:表示字符串包含多少16位码元 charAt():方法返回给定索引位置的字符 charCodeAt() :可以查看指定码元的字符编码 String.fr ...