python paramiko使用_python Paramiko使用示例
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使用示例相关推荐
- python paramiko使用_python paramiko 模块使用方法
pythonparamiko paramiko 遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接,可以实现远程文件的上传,下载或通过ssh远程执行命令.项目地址:https://gith ...
- python定时器库_Python定时器完整示例 python定时器用法举例
例子,python定时器实例代码. 代码示例: ''' Created on 2012-10-11 @author: blh ''' import threading import time clas ...
- python paramiko安装_Python Paramiko模块的安装与使用详解
一.前言 常见的解决方法都会需要对远程服务器必要的配置,如果远程服务器只有一两台还好说,如果有N台,还需要逐台进行配置,或者需要使用代码进行以上操作时,上面的办法就不太方便了.而使用paramiko可 ...
- python wget 卡住_python – Paramiko在执行大型wget命令时挂起
嗨,我在执行一个通过Ubuntu 10服务器执行100mb文件的wget的命令时遇到问题.除此之外,较短的命令工作正常.下面的类包含我如何使用paramiko和我克服这个问题的不同尝试(请参阅不同的r ...
- python ssh模块_python paramiko模块(ssh) 使用
import paramiko from io import StringIO # 一般可以从数据库里读取秘钥字符串 key_str = """-----BEGIN RS ...
- python paramiko并发_python paramiko 多线程批量执行指令及批量上传文件和目录
源代码: 环境需求: 1.python3 2.paramiko pip install --upgrade pip apt-get install libssl-dev pip3 install pa ...
- python验证码生成_Python 生成验证码示例
对python这个高级语言感兴趣的小伙伴,下面一起跟随编程之家 jb51.cc的小编两巴掌来看看吧! 在web开发中经常用到验证码,为了防止机器人注册或者恶意登陆和查询等,作用不容小觑 但是验证码其实 ...
- python urlopen函数_Python urlopen()函数 示例分享
好了,废话少说,我们先看看几个示例吧 一.打开一个网页获取所有的内容 复制代码 代码如下: from urllib import urlopen doc = urlopen("http:// ...
- python计时器程序_Python计时器程序示例
Tkinter可以做到,但请记住,调度的工作方式不同 Tkinter是一个面向GUI的框架,内置了很多功能.在 (Python本身允许您独立于Tkinter进行设计.)在 Tkinter-side t ...
最新文章
- synchronized,ReentrantLock解决锁冲突,脏读的问题
- robot:根据条件主动判定用例失败或者通过
- Intel® Nehalem/Westmere架构/微架构/流水线 (9) - 系统软件增强/能耗增强
- cuid卡写入后锁死_CUID卡,CUID白卡,CUID门禁卡,CUID电梯卡,CUID可改写卡
- 参加第六届中国制造业MES应用年会
- 【HDU-5963】朋友【树上博弈】
- getJSON()的使用
- 黑客概念与文化(课程笔记)
- java相对路径的写法格式_java相对路径的写法
- 关于SQL Server中将数值类型转换为字符串的问题
- 【快乐摸鱼】— 用python开发益智游戏
- 35,UC(14) .
- rabbitmq高级特性(消息手动确认)
- Metaq原理与应用
- php 短信验证 云之讯,python3.7实现云之讯、聚合短信平台的短信发送功能
- IVD行业常见的核酸提取方法及原理
- 镜头畸变矫正、鱼眼镜头(算法)
- Itext生成图表类型PDF
- 无人机航测作业流程,你会几个?
- SAP ERP系统总帐概念
热门文章
- 计算机pdf转换word,电脑pdf改成word格式,值得收藏的方法!
- 网站权重问题值得我们深思
- 综合英语二课本电子版哪里有_全新版大学英语综合教程-2-课文电子书
- CDH简单介绍及体系架构
- Android 开发中一些很有用但你不知道的方法
- 2017全国计算机二级考试,2017年全国计算机二级考试题库
- 如何在家里教孩子玩 Scratch、学 Python 编程
- html设置鼠标移入移出样式,css实现鼠标移入移出动态效果
- flink 源码编译注意事项
- Android开发-自定义View-AndroidStudio(二十五)数独(2)Handler延迟