python模块之:paramiko
1. 介绍:
paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来实现。
安装: python3.6 -m pip install paramiko
2. 使用:
SSHClient
用于连接远程服务器并执行基本命令
基于用户名密码连接:
#!/usr/bin/env python3
# _*_ coding:utf- _*_
import paramiko
ip,port = '10.0.3.60',''
username,password = 'lishichao',' # 创建ssh对象
ssh = paramiko.SSHClient()
# 解决ssh第一次连接,认证问题
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(ip,port,username,password) # 执行命令
stdin,stdout,stderr = ssh.exec_command('hostname') # stdin 标准输入, stdout 命令执行的结果, stderr 命令执行错误的结果
# 获取命令结果
ret = stdout.read()
if ret:
print(ret.decode('utf-8').strip())
else:
print("命令执行失败")
print(stderr.read().decode('utf-8').strip()) # 关闭连接
ssh.close() # 执行结果:
b'docker-server\n' # byte 类型,需要decode转码
基于公钥密钥连接:
#创建秘钥对
ssh-keygen
# 推送到指定服务器
ssh-copy-id -i .ssh/id_rsa.pub 用户名字@192.168.x.xxx
前提: 分配公钥
import paramiko # 秘钥文件
private_key = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa') # 创建SSH对象
ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='10.0.3.56', port=, username='root', pkey=private_key) # 执行命令
stdin, stdout, stderr = ssh.exec_command('df')
# 获取命令结果
result = stdout.read()
print(result.decode('utf-8'))
# 关闭连接
ssh.close()
出现警告:CryptographyDeprecationWarning
/usr/local/lib/python3./site-packages/paramiko/kex_ecdh_nist.py:: CryptographyDeprecationWarning: encode_point has been deprecated on EllipticCurvePublicNumbers and will be removed in a future version. Please use EllipticCurvePublicKey.public_bytes to obtain both compressed and uncompressed point encoding.
m.add_string(self.Q_C.public_numbers().encode_point())
/usr/local/lib/python3./site-packages/paramiko/kex_ecdh_nist.py:: CryptographyDeprecationWarning: Support for unsafe construction of public numbers from encoded data will be removed in a future version. Please use EllipticCurvePublicKey.from_encoded_point
self.curve, Q_S_bytes
/usr/local/lib/python3./site-packages/paramiko/kex_ecdh_nist.py:: CryptographyDeprecationWarning: encode_point has been deprecated on EllipticCurvePublicNumbers and will be removed in a future version. Please use EllipticCurvePublicKey.public_bytes to obtain both compressed and uncompressed point encoding.
hm.add_string(self.Q_C.public_numbers().encode_point())
警告信息
原因:
paramiko 2.4. 依赖 cryptography,而最新的cryptography==.5里有一些弃用的API。 解决:
删掉cryptography 2.5,安装2.4.2,就不会报错了。
python3 -m pip uninstall cryptography==2.5
python3 -m pip install cryptography==2.4.
解决方法:
SFTPClient
用于连接远程服务器并执行上传下载
基于用户名密码上传下载
import paramiko
transport = paramiko.Transport(('10.0.3.56',))
transport.connect(username='root', password='buguniao123!@#')
sftp = paramiko.SFTPClient.from_transport(transport)
# 将/tmp/test.txt 上传至服务器 /data/test.txt
sftp.put('/tmp/test.txt', '/data/test.txt')
# 将/data/test.txt 下载到本地 /tmp/a.txt
sftp.get('/data/test.txt', '/tmp/a.txt')
transport.close()
基于公钥密钥上传下载
import paramiko
private_key = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa')
transport = paramiko.Transport(('10.0.3.56', ))
transport.connect(username='root', pkey=private_key)
sftp = paramiko.SFTPClient.from_transport(transport)
# 将/tmp/haha.txt 上传至服务器 /tmp/a.txt
sftp.put('/tmp/haha.txt', '/tmp/a.txt')
# 将/tmp/a.txt 下载到本地 /root/a.txt
sftp.get('/tmp/a.txt', '/root/a.txt')
transport.close()
python模块之:paramiko的更多相关文章
- python模块之paramiko
46.python模块之paramiko SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
- Python 模块功能paramiko SSH 远程执行及远程下载
模块 paramiko paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现 ...
- Python模块:paramiko
paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric和ansible内部的远程管理就是使用的paramiko来现实. 1.下载安装 Wi ...
- Python模块学习 - Paramiko
简介 ssh是一个协议,OpenSSH是其中一个开源实现,paramiko是Python的一个库,实现了SSHv2协议(底层使用cryptography). 有了Paramiko以后,我们就可以在Py ...
- python模块之 paramiko
paramiko模块提供了ssh及sft进行远程登录服务器执行命令和上传下载文件的功能.这是一个第三方的软件包,使用之前需要安装. 1 基于用户名和密码的 sshclient 方式登录 # 建立一个s ...
- python模块之 paramiko(转载)
paramiko模块提供了ssh及sft进行远程登录服务器执行命令和上传下载文件的功能.这是一个第三方的软件包,使用之前需要安装. 1 基于用户名和密码的 sshclient 方式登录 # 建立一个s ...
- 26 Python模块之paramiko
paramiko模块提供了ssh及sft进行远程登录服务器执行命令和上传下载文件的功能.这是一个第三方的软件包,使用之前需要安装. 1. 基于用户名和密码的sshclient方式登录 #创建一个ssh ...
- 【目录】Python模块学习系列
目录:Python模块学习笔记 1.Python模块学习 - Paramiko - 主机管理 2.Python模块学习 - Fileinput - 读取文件 3.Python模块学习 - Confi ...
- python第三方模块之paramiko模块
目录: paramiko模块介绍 paramiko模块安装 paramiko模块使用 一.paramiko模块介绍 paramiko是一个用于做远程控制的模块,使用该模块可以对远程服务器进行命令或文件 ...
- Python—模块介绍
什么是模块? 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码 ...
随机推荐
- Proxy Design Pattern 代理设计模式
代理设计模式.此模式是用于serverclient排序.互联网接入,也经常使用的类代理,我觉得这种感觉很复杂.但是,这种设计模式本身是非常easy的. 是一类调用另一个类的功能.客户调用类,实际工作是 ...
- 机器学习: Tensor Flow with CNN 做表情识别
我们利用 TensorFlow 构造 CNN 做表情识别,我们用的是FER-2013 这个数据库, 这个数据库一共有 35887 张人脸图像,这里只是做一个简单到仿真实验,为了计算方便,我们用其中到 ...
- DOS符号转义(转 http://www.robvanderwoude.com/escapechars.php)
Escape Characters Character to be escaped Escape Sequence Remark % %% May not always be required in ...
- WPF 4 开发Windows 7 任务栏(Overlay Icon、Thumbnail Toolbar、Progress Bar)
原文:WPF 4 开发Windows 7 任务栏(Overlay Icon.Thumbnail Toolbar.Progress Bar) 在上一篇我们介绍了如何在WPF 4 中开发Wind ...
- XF 标签页面
using System; using Xamarin.Forms; using Xamarin.Forms.Xaml; [assembly: XamlCompilation (XamlCompila ...
- 图片处理拓展篇 : 图片转字符画(ascii)
首先要明确思路, 图片是由像素组成的, 不同的像素有不同的颜色(rgb), 那么既然我们要转化为字符画, 最直接的办法就是利用字符串来替代像素, 也就是用不同的字符串来代表不同的像素. 另外图片一般来 ...
- Java CLASSPATH 引发的问题
# 问题 在做 OJ 的时候,由于程序需要编译运行,出于安全性考虑,我选择利用类 ProcessBuilder ,一个通过命令行调用 Java 程序的类. 我在 Eclipse 中或者在 CMD 中执 ...
- passed into methods by value java专题
java没有引用传递只有按值传递,没有引用传递只有按值传递,值传递.因为Primitive类型的值不能改变,所以method不能更改调用方传的primitive 值.因为method更改的是Primi ...
- SQL Server 游标运用:查看所有数据库所有表大小信息(Sizes of All Tables in All Database)
原文:SQL Server 游标运用:查看所有数据库所有表大小信息(Sizes of All Tables in All Database) 一.本文所涉及的内容(Contents) 本文所涉及的内容 ...
- WPF 中RichTextBox控件用法细讲
1. 取得已被选中的内容:(1)使用RichTextBox.Document.Selection属性(2)访问RichTextBox.Document.Blocks属性的“blocks”中的Text ...