Paramiko 是由 Python 语言编写的一个扩展模块,提供了基于 SSHv2 协议 (包括客户端和服务端)的多种功能实现。通常被用来远程控制类 UNIX 系统。

Paramiko 可以直接使用 pip 命令安装:

$ pip install paramiko

此处不作过多介绍,参考后文中的代码示例。

远程执行 Linux 命令

代码如下:

import paramiko

# 初始化 SSH 客户端,通过用户名密码连接至远程服务器

client = paramiko.SSHClient()

client.set_missing_host_key_policy(paramiko.AutoAddPolicy)

client.connect(hostname='remoteserver_ip', username='username', password='password')

# 通过 RSA 秘钥验证的方式连接至远程 SSH 服务

# private_key = paramiko.RSAKey.from_private_key_file('~/.ssh/id_rsa')

# client.connect(hostname="remoteserver_ip", username="username", pkey=private_key)

# 远程执行 df -h 命令并打印输出

stdin, stdout, stderr = client.exec_command('df -h')

print(stdout.read().decode('utf-8'))

client.close()

运行效果如下:

SFTP 文件传输

示例代码如下:

import paramiko

transport = paramiko.Transport(('hostname_or_ip', port))

# 通过用户名密码完成验证建立连接

transport.connect(username='username', password='password')

# 通过 RSA 私钥文件完成验证建立连接

# private_key = paramiko.RSAKey.from_private_key_file('/path/to/private_key_file')

# transport.connect(username='username', pkey=private_key)

sftp = paramiko.SFTPClient.from_transport(transport)

localpath = "localfile"

remotepath = "remotefile_fullpath"

sftp.put(localpath, remotepath)

print("Successfully uploaded")

transport.close()

综合示例

代码如下(文件名 ssh_connection.py ):

import paramiko

import getpass

import os

class SSHConnection():

def __init__(self, user, host, port=22, password=''):

self.username = user

self.host = host

self.port = port

self.password = password

self.keyfile = self.get_keyfile()

def get_keyfile(self, path=os.getcwd()):

default_keyfile = os.path.join(

os.environ['HOME'], '.ssh', 'id_rsa')

if 'id_rsa' in os.listdir(path):

keyfile = os.path.join(path, 'id_rsa')

elif os.path.isfile(default_keyfile):

keyfile = default_keyfile

else:

keyfile = ''

return keyfile

def connect(self):

transport = paramiko.Transport((self.host, self.port))

if self.password:

transport.connect(username=self.username, password=self.password)

elif self.keyfile:

transport.connect(

username=self.username,

pkey=paramiko.RSAKey.from_private_key_file(self.keyfile))

else:

password = getpass.getpass(

"Password for %s@%s: " % (self.username, self.host))

transport.connect(username=self.username, password=password)

self._transport = transport

print("Connected to %s as %s" % (self.host, self.username))

def close(self):

self._transport.close()

def run_cmd(self, command):

ssh = paramiko.SSHClient()

ssh._transport = self._transport

stdin, stdout, stderr = ssh.exec_command(command)

res = stdout.read().decode('utf-8')

error = stderr.read().decode('utf-8')

if error.strip():

return error

else:

return res

def trans_file(self, localpath, remotepath, method=''):

sftp = paramiko.SFTPClient.from_transport(self._transport)

if method == 'put':

sftp.put(localpath, remotepath)

print("File %s has uploaded to %s" % (localpath, remotepath))

elif method == 'get':

sftp.get(remotepath, localpath)

print("File %s has saved as %s" % (remotepath, localpath))

else:

print('usage: trans_file(localpath, remotepath, method="get/put"')

def __del__(self):

self.close()

测试结果如下:

(python3) D:\Program\python\devops>python

Python 3.7.2 (default, Jan 2 2019, 17:07:39) [MSC v.1915 64 bit (AMD64)] :: Anaconda, Inc. on win32

Type "help", "copyright", "credits" or "license" for more information.

>>> from ssh_connection import SSHConnection

>>> client = SSHConnection('starky','127.0.0.1')

>>> client.connect()

Connected to 127.0.0.1 as starky

>>> client.run_cmd('uname -a')

'Linux server1 5.0.0-20-generic #21-Ubuntu SMP Mon Jun 24 09:32:09 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux\n'

>>> client.trans_file('id_rsa.pub', '/home/starky/id_rsa.pub', method='put')

File id_rsa.pub has uploaded to /home/starky/id_rsa.pub

>>> client.run_cmd('ls -l /home/starky/id_rsa.pub')

'-rw-rw-r-- 1 starky starky 410 7月 20 15:01 /home/starky/id_rsa.pub\n'

>>> exit()

以上就是python Paramiko使用示例的详细内容,更多关于python Paramiko的资料请关注脚本之家其它相关文章!

python paramiko使用_python Paramiko使用示例相关推荐

  1. python paramiko使用_python paramiko 模块使用方法

    pythonparamiko paramiko 遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接,可以实现远程文件的上传,下载或通过ssh远程执行命令.项目地址:https://gith ...

  2. python定时器库_Python定时器完整示例 python定时器用法举例

    例子,python定时器实例代码. 代码示例: ''' Created on 2012-10-11 @author: blh ''' import threading import time clas ...

  3. python paramiko安装_Python Paramiko模块的安装与使用详解

    一.前言 常见的解决方法都会需要对远程服务器必要的配置,如果远程服务器只有一两台还好说,如果有N台,还需要逐台进行配置,或者需要使用代码进行以上操作时,上面的办法就不太方便了.而使用paramiko可 ...

  4. python wget 卡住_python – Paramiko在执行大型wget命令时挂起

    嗨,我在执行一个通过Ubuntu 10服务器执行100mb文件的wget的命令时遇到问题.除此之外,较短的命令工作正常.下面的类包含我如何使用paramiko和我克服这个问题的不同尝试(请参阅不同的r ...

  5. python ssh模块_python paramiko模块(ssh) 使用

    import paramiko from io import StringIO # 一般可以从数据库里读取秘钥字符串 key_str = """-----BEGIN RS ...

  6. python paramiko并发_python paramiko 多线程批量执行指令及批量上传文件和目录

    源代码: 环境需求: 1.python3 2.paramiko pip install --upgrade pip apt-get install libssl-dev pip3 install pa ...

  7. python验证码生成_Python 生成验证码示例

    对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! 在web开发中经常用到验证码,为了防止机器人注册或者恶意登陆和查询等,作用不容小觑 但是验证码其实 ...

  8. python urlopen函数_Python urlopen()函数 示例分享

    好了,废话少说,我们先看看几个示例吧 一.打开一个网页获取所有的内容 复制代码 代码如下: from urllib import urlopen doc = urlopen("http:// ...

  9. python计时器程序_Python计时器程序示例

    Tkinter可以做到,但请记住,调度的工作方式不同 Tkinter是一个面向GUI的框架,内置了很多功能.在 (Python本身允许您独立于Tkinter进行设计.)在 Tkinter-side t ...

最新文章

  1. synchronized,ReentrantLock解决锁冲突,脏读的问题
  2. robot:根据条件主动判定用例失败或者通过
  3. Intel® Nehalem/Westmere架构/微架构/流水线 (9) - 系统软件增强/能耗增强
  4. cuid卡写入后锁死_CUID卡,CUID白卡,CUID门禁卡,CUID电梯卡,CUID可改写卡
  5. 参加第六届中国制造业MES应用年会
  6. 【HDU-5963】朋友【树上博弈】
  7. getJSON()的使用
  8. 黑客概念与文化(课程笔记)
  9. java相对路径的写法格式_java相对路径的写法
  10. 关于SQL Server中将数值类型转换为字符串的问题
  11. 【快乐摸鱼】— 用python开发益智游戏
  12. 35,UC(14) .
  13. rabbitmq高级特性(消息手动确认)
  14. Metaq原理与应用
  15. php 短信验证 云之讯,python3.7实现云之讯、聚合短信平台的短信发送功能
  16. IVD行业常见的核酸提取方法及原理
  17. 镜头畸变矫正、鱼眼镜头(算法)
  18. Itext生成图表类型PDF
  19. 无人机航测作业流程,你会几个?
  20. SAP ERP系统总帐概念

热门文章

  1. 计算机pdf转换word,电脑pdf改成word格式,值得收藏的方法!
  2. 网站权重问题值得我们深思
  3. 综合英语二课本电子版哪里有_全新版大学英语综合教程-2-课文电子书
  4. CDH简单介绍及体系架构
  5. Android 开发中一些很有用但你不知道的方法
  6. 2017全国计算机二级考试,2017年全国计算机二级考试题库
  7. 如何在家里教孩子玩 Scratch、学 Python 编程
  8. html设置鼠标移入移出样式,css实现鼠标移入移出动态效果
  9. flink 源码编译注意事项
  10. Android开发-自定义View-AndroidStudio(二十五)数独(2)Handler延迟