paramiko安装

SSH是一个协议,paramiko 是一个Python 的库,该库支持sshv2协议,实现了对远程服务器执行操作

安装命令:

pip3 install paramiko

SSHClient类与SFTPClient类

paramiko包含两个核心组建,分别是SSHClient和SFTPClient

  • SSHClient:类似于Linux下的ssh命令,用于执行远程命令。
  • SFTPClient:类似于Linux下的sftp命令,实现远程文件操作

SSHClient类的方法

  • connect:实现远程连接认证,只有hostname 是必传参数
connect(self,hostname,port=22,username=None,password=None,
pkey=None,key_filename=None,timeout=None,
allow_agent=True,look_for_keys=True,compress=False)
  • set_missing_host_key_poilcy:设置没有做免密的主机应对的策略
  • exec_command:在远程服务器上执行命令的方法
  • open_sftp:在远程服务器上打开sftp回话

SFTPClient类的方法

  • put:上传文件
  • get:下载文件
  • mkdir:创建目录
  • remove:移除文件
  • rmdir:删除目录
  • rename:重命名文件/目录
  • stat:查看文件详细信息
  • listdir:列出指定目录下的文件内容

paramiko的基本使用

paramiko.SSHClient两种认证方式

在执行远程服务器操作之前,首先需要连接远程服务器并进行认证。

paramiko 与 ssh命令一样,支持密码认证和秘钥认证两种方式

使用密码认证

import paramiko

ip = "192.168.32.130"
port = 22
user = "root"
pwd = "123456" # 使用密码认证
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy)
ssh.connect(ip,port,user,pwd)

使用秘钥认证

import paramiko

ip = "192.168.32.130"
port = 22
user = "root"
pwd = "123456" # 使用密钥认证
ssh = paramiko.SSHClient()
ssh.connect(ip,port,user,key_filename="私钥文件")

使用方法

远程执行命令

import paramiko

ip = "192.168.32.130"
port = 22
user = "root"
pwd = "123456" ### 远程执行命令
ssh = paramiko.SSHClient()
# 自动添加免密
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接远程主机
ssh.connect(ip,port,user,pwd) command = input("请输入你要执行的命令").strip()
# 接收输出结果
stdin,stdout,stderr = ssh.exec_command(command)
res = stdout.readlines() + stderr.readlines()
for line in res:
print(line.strip())
ssh.close()

上传文件到远程机器

import paramiko

ip = "192.168.32.130"
port = 22
user = "root"
pwd = "123456" t = paramiko.Transport((ip,port))
t.connect(username=user,password=pwd)
sftp = paramiko.SFTPClient.from_transport(t)
# 上传至远程服务器的目录/文件
remotepath = "/tmp/test1.txt"
# 本地的一个文件
localpath = "/tmp/test.txt"
# 上传
sftp.put(localpath,remotepath)
t.close()

从远程机器下载文件

import paramiko

ip = "192.168.32.130"
port = 22
user = "root"
pwd = "123456" t = paramiko.Transport((ip,port))
t.connect(username=user,password=pwd)
sftp = paramiko.SFTPClient.from_transport(t)
# 上传至远程服务器的目录/文件
remotepath = "/tmp/test1.txt"
# 本地的一个文件
localpath = "/tmp/test.txt"
# 下载
sftp.get(remotepath,localpath)
t.close()

SSH协议的Python实现paramiko的更多相关文章

  1. 使用python的Paramiko模块登陆SSH

    使用python的Paramiko模块登陆SSH paramiko是用Python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接. python的paramiko模块 ...

  2. paramiko:实现ssh协议,对linux服务器资源的访问

    介绍 网络传输是遵循协议的,比如SSH,paramiko则是实现了SSHv2协议的一个python库(底层使用的是cryptography).有了paramiko之后,我们便可以通过python使用s ...

  3. (转)python通过paramiko实现,ssh功能

    python通过paramiko实现,ssh功能 1 import paramiko 2 3 ssh =paramiko.SSHClient()#创建一个SSH连接对象 4 ssh.set_missi ...

  4. Python之paramiko基础

    一.Paramiko模块 paramiko是一个自由和开放源码模块使用,实现SSH2协议安全(认证和加密)连接到远程计算机. 二.windwos下安装paramiko模块 #在DOS命令行执行如下命令 ...

  5. 如何进行服务器的批量管理以及python 的paramiko的模块

    最近对公司的通道机账号进行改造管理,全面的更加深入的理解了公司账号管理的架构.(注:基本上所有的机器上的ssh不能使用,只有部分机器能够使用.为了安全的角度考虑,安装的不是公版的ssh,而都是定制版的 ...

  6. python的paramiko模块

        paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.paramiko支持Linux, Solaris, BSD, MacOS X, ...

  7. (转)python的paramiko模块

    python的paramiko模块  原文:http://www.cnblogs.com/breezey/p/6663546.html     paramiko是用python语言写的一个模块,遵循S ...

  8. Python网络模块Paramiko基本使用

    一.Paramiko简介 首先来看谁创造了paramiko,是一个名叫Jeff Forcier创建了paramiko项目.项目主页:http://www.paramiko.org,可以去看上面有很多相 ...

  9. python 之 paramiko

    """ 对app进行一些路由设置 """ """ 对socketio进行一些监听设置 "" ...

随机推荐

  1. django-filter 实现过滤时查询是否包含在数组的方法,in数组的实现

    查了半天无解,还是在官网找到的,记录一下 使用 BaseInFilter 官网地址:https://django-filter.readthedocs.io/en/master/ref/filters ...

  2. 搞大数据,你不懂这三大数据处理趋势就OUT了

    搞大数据,你不懂这三大数据处理趋势就OUT了 企业数据每年以PB级甚至上百PB爆炸式增长,越来越大的数据量正为扩大分析策略在企业应用软件领域的拓展提供了数据基础,但数据的价值是有时效性的,越早分析越能 ...

  3. 14. TIM of STM32F103ZE

    block diagram 14.3.1 Time-base unit 有三个基础的寄存器: 计数寄存器(TIMx_CNT) 预分配寄存器(TIMx_PSC), 自动重载寄存器(TIMx_ARR) 重 ...

  4. HDU-1492-The number of divisors(约数) about Humble Numbers -求因子总数+唯一分解定理的变形

    A number whose only prime factors are 2,3,5 or 7 is called a humble number. The sequence 1, 2, 3, 4, ...

  5. QT之QStatusBar

    1.QStatusBar一般处于主窗体(QMainWindow)的左下角用于显示比较重要的状态信息.我们通常调用其showMessage()函数 QT官方显示:[slot] void QStatusB ...

  6. mybatis中一对一关系映射

    一对一关系中普通的配置方式 一.多表连接查询语句: <select id="selectStudentWithAddress" parameterType="int ...

  7. CSS——div内文字的溢出部分用省略号显示

    使得div内文字的溢出部分用省略号显示,可归纳为两种解决办法,一种方法是用CSS解决,另一种方法是js解决. 一.通过CSS控制显示 div内显示一行,超出部分用省略号显示 div内显示多行,超出部分 ...

  8. SwiftUI 实现Draggesture效果

    今天闲来无事,使用SwiftUI 实现拖动,并且返回的动态效果.代码不多..... 效果如下: 代码如下: import SwiftUI import Combine class KBDragObje ...

  9. js把时间转化为 ‘2019-07-01’ 格式

    将new Date()数据转化为‘2019-07-01’格式 //时间 function formatDate(date) { var y = date.getFullYear(); ; m = m ...

  10. [JZOJ4759] 【雅礼联考GDOI2017模拟9.4】石子游戏

    题目 描述 题目大意 在一棵树上,每个节点都有些石子. 每次将mmm颗石子往上移,移到根节点就不能移了. 双方轮流操作,问先手声还是后手胜. 有三种操作: 1. 询问以某个节点为根的答案. 2. 改变 ...