ssh是一个协议,OpenSSH是其中一个开源实现,paramiko是Python的一个库,实现了SSHv2协议(底层使用cryptography)。
有了Paramiko以后,我们就可以在Python代码中直接使用SSH协议对远程服务器执行操作,而不是通过ssh命令对远程服务器进行操作。
由于paramiko属于第三方库,所以需要使用如下命令先行安装
pip install paramiko

底层cryptography:加密解密模块,cryptography 的目标是成为“人类易于使用的密码学包cryptography for humans”,这个想法使你能够创建简单安全、易于使用的加密方案。需要先安装:
pip install cryptography
如果已经安装过,可以通过pip install --user -I cryptography

paramiko包含两个核心组件:SSHClient和SFTPClient。
SSHClient的作用类似于Linux的ssh命令,是对SSH会话的封装,该类封装了传输(Transport),通道(Channel)及SFTPClient建立的方法(open_sftp),通常用于执行远程命令。
SFTPClient的作用类似与Linux的sftp命令,是对SFTP客户端的封装,用以实现远程文件操作,如文件上传、下载、修改文件权限等操作。

# Paramiko中的几个基础名词:
1、Channel:是一种类Socket,一种安全的SSH传输通道;
2、Transport:是一种加密的会话,使用时会同步创建了一个加密的Tunnels(通道),这个Tunnels叫做Channel;
3、Session:是client与Server保持连接的对象,用connect()/start_client()/start_server()开始会话。

SFTPCLient作为一个sftp的客户端对象,根据ssh传输协议的sftp会话,实现远程文件操作,如上传、下载、权限、状态
put(self, localpath, remotepath, callback=None, confirm=True)   上传文件到服务器
get(self, remotepath, localpath, callback=None)    下载服务器的文件
remove(self, path)   删除服务器文件
rename(self, oldpath, newpath)  重命名服务器上的文件
mkdir(self, path, mode=o777)    在服务器创建文件夹

from datetime import datetime
import paramiko
import osclass SftpDeal():def __init__(self):self.hostname = 'ip'self.username = 'username 'self.password = 'password 'self.port = 22try:self.conn = paramiko.Transport((self.hostname, self.port))            # 获取Transport实例self.conn.connect(username=self.username, password=self.password)     # 连接SSH服务端,使用passwordself.sftp_ob = paramiko.SFTPClient.from_transport(self.conn)          # 获取SFTP实例except Exception as e:print(e)# 上传文件,local_file-本地目录;remote_path-远程目录def upload(self,local_file,remote_path):try:self.sftp_ob.put(local_file, remote_path)except Exception as e:self.sftp_ob.mkdir(os.path.split(remote_path)[0])self.sftp_ob.put(local_file, remote_path)print("从本地: %s 上传到: %s" % (local_file, remote_path))print(remote_path + ' 文件上传成功 %s ' % datetime.now().strftime('%Y-%m-%d %H:%M:%S'))#self.conn.close()def download(self,remote_path,local_file):try:self.sftp_ob.get(remote_path,local_file)except Exception as e:self.sftp_ob.mkdir(os.path.split(local_file)[0])self.sftp_ob.get(remote_path, local_file)print("从服务器: %s 下载到: %s" % (remote_path,local_file ))print(remote_path,'文件下载成功 %s ' % datetime.now().strftime('%Y-%m-%d %H:%M:%S'))self.conn.close()def remove(self,remote_path):try:self.sftp_ob.remove(remote_path)print(remote_path + ' 文件删除成功 %s ' % datetime.now().strftime('%Y-%m-%d %H:%M:%S'))except:print('服务器上面无文件:%s'% (remote_path))#self.conn.close()

【Python】Paramiko模块实现Linux服务器远程文件操作相关推荐

  1. 【代码】python paramiko模块代码示例:远程执行命令及上传和下载

    执行命令 - 通过用户名和密码连接服务器 #!/usr/bin/env python #coding:utf-8import paramikossh = paramiko.SSHClient() ss ...

  2. python自定义包或模块在Linux服务器导入错误的解决办法

    python自定义包或模块在Linux服务器导入错误的解决办法 在本地机器上跑python代码,自己定义的文件进行导包运行是没有问题,但是放到linux服务器上的时候就会提示 ImportError: ...

  3. python批量下载文件只有1kb_Python 实现批量从不同的Linux服务器下载文件

    基于Python实现批量从不同的Linux服务器下载文件 by:授客 QQ:1033553122 实现功能 批量从不同的Linux服务器下载指定文件 测试环境 Win7 64位 Python 3.3. ...

  4. Python 实现批量从不同的Linux服务器下载文件

    基于Python实现批量从不同的Linux服务器下载文件   by:授客 QQ:1033553122 实现功能 1 测试环境 1 使用方法 1 1. 编辑配置文件conf/file_for_downl ...

  5. python批量下载网页文件夹_Python实现批量从不同的Linux服务器下载文件

    基于Python实现批量从不同的Linux服务器下载文件 by:授客 实现功能 批量从不同的Linux服务器下载指定文件 测试环境 Win7 64位 Python 3.3.2 pscp 64位 下载地 ...

  6. java使用Jsch实现远程操作linux服务器进行文件上传、下载,删除和显示目录信息...

    1.java使用Jsch实现远程操作linux服务器进行文件上传.下载,删除和显示目录信息. 参考链接:https://www.cnblogs.com/longyg/archive/2012/06/2 ...

  7. Windows操作系统远程Linux服务器传输文件方法(以EasyDSS云平台、EasyNVR上传部署为例)...

    本文转自博客:https://blog.csdn.net/black_3717/article/details/79769406 问题背景: 之前给客户部署我们一款EasyDSS云平台(配合EasyN ...

  8. python paramiko并发_使用Python paramiko模块利用多线程实现ssh并发执行操作

    1.paramiko概述 ssh是一个协议,OpenSSH是其中一个开源实现,paramiko是Python的一个库,实现了SSHv2协议(底层使用cryptography). 有了Paramiko以 ...

  9. python paramiko 模块简介(SSH2协议)

    一:简介 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. 由于使用的是python这样的能够跨平台运行的语言,所以所有python支 ...

最新文章

  1. 安利7款珍藏已久的windows软件,每一个都非常强大
  2. 工作中都不用源码,面试的时候为什么要问呢?
  3. WCF入门(八)——异常处理2
  4. Spring Remoting: HTTP Invoker--转
  5. apple mach-o linker (id) error
  6. 4.Dynamics CRM 数据数量限制更改
  7. 安装 RabbitMQ
  8. 读书笔记_打开量化投资的黑箱05
  9. 世界上最简单的会计书-笔记
  10. CSDN开博三周年--回首向来萧瑟处,铁马冰河入梦来
  11. 阿里巴巴-菜鸟网络和申通快递面试
  12. 各公司用户画像技术案例分享
  13. PrintWriter out= response.getWriter()失效无法在前端弹出提示框以及乱码问题.
  14. 小程序员的不完整大学回忆3
  15. CycloneII之EDA及学术开发功能描述
  16. 采用策略模式实现订单支付多种方式
  17. 物联网 DFrobot 掌控版 人工智能测温实验
  18. shiro最简洁的权限管理(菜单)控制
  19. 【Python学习笔记—保姆版】第四章—关于Pandas、数据准备、数据处理、数据分析、数据可视化
  20. RabbitMQ初步到精通-第十章-RabbitMQ之Spring客户端源码

热门文章

  1. 简述计算机进行远程桌面管理操作过程,服务器应用之“远程桌面连接”(操作篇)...
  2. php设计者,PHP设计者---composer
  3. python语义分析_Python差异的潜在语义分析
  4. 销户c语言,c – 如何在注销时优雅地退出QApplication?
  5. java用户界面项目_结对项目(带图型用户界面)Java实现【柴政-陈起廷】
  6. html整体引入js,html页面用js引入js的方式
  7. linux ls 中文乱码_每天一个linux命令:Linux文件类型与扩展名
  8. JavaScript变量声明+数据类型+数字格式+操作符+进制
  9. linux 开启关闭tomcat服务器端口,linux系统安装、启动和关闭tomcat
  10. java怎么确定数据在区间内_处理数据时,单元格内内容太多无法计数怎么破?...