20Ptrhon标准库系列之Paramiko模块

简介:

Python标准库系列之Paramiko模块


Paramiko是一个Python实施SSHv2的协议,提供客户端和服务器的功能。虽然它利用一个Python C扩展低级别加密的paramiko本身就是围绕SSH联网概念的纯Python接口。

Paramiko官网:http://www.paramiko.org/


安装Paramiko

1
pip3 install paramiko

安装之后进入python解释器导入模块,如果导入成功则安装成功,否则安装失败.

1
2
3
4
C:\Users\Administrator>python
Python  3.5 . 2  (v3. 5.2 : 4def2a2901a5 , Jun  25  2016 22 : 18 : 55 ) [MSC v. 1900  64  bit (AMD64)] on win32
Type  "help" "copyright" "credits"  or  "license"  for  more information.
>>>  import  paramiko

使用用户名与密码的方式连接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 导入paramiko模块
>>>  import  paramiko
# 创建SSHClient对象
>>> ssh  =  paramiko.SSHClient()
# 如果是一个新主机连接,会出现yes/no,AutoAddPolicy自动填写yes的
>>> ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
>>> ssh.connect(hostname = '192.168.56.100' , port = 22 , username = 'root' , password = '123456' )
# 执行命令
>>> stdin, stdout, stderr  =  ssh.exec_command( 'df -h' )
# 获取正确的输出
>>> result  =  stdout.read()
# 关闭连接
>>> ssh.close()
# 获取到的值
>>> result
b 'Filesystem      Size  Used Avail Use% Mounted on\n/dev/sda3        48G  3.3G   45G   7% /\ndevtmpfs        984M     0  984M   0% /dev\ntmpfs           993M     0  993M   0% /dev/shm\ntmpfs           993M  8.9M  984M   1% /run\ntmpfs           993M     0  993M   0% /sys/fs/cgroup\n/dev/sda1       197M  137M   60M  70% /boot\ntmpfs           199M     0  199M   0% /run/user/0\n'

使用密钥的方式连接

在使用密钥的方面连接之前我们需要先做ssh-key认证,步骤如下:

1
[root@linux - node1 ~] # ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''

然后下载/root/.ssh/id_rsa下载下来,复制到E:\python-intensive-training\目录系,下面是在windows下使用paramiko连接脚本如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/use/bin/env python
# _*_ coding: utf-8 _*_
 
import  paramiko
 
# 指定密钥的文件
private_key  =  paramiko.RSAKey.from_private_key_file( 'E:\python-intensive-training\id_rsa' )
 
# 创建SSH对象
ssh  =  paramiko.SSHClient()
 
# 允许连接不在know_hosts文件中的主机,要不然一台新机器去连接它的时候会让你输入yes/no
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
 
# 连接服务器
ssh.connect(hostname = '192.168.56.100' , port = 22 , username = 'root' , pkey = private_key)
 
# 执行命令
stdin, stdout, stderr  =  ssh.exec_command( 'df -h' )
"""
stdin:标准输入
stdout:标准输出
stderr:错误输出
"""
 
# 获取命令执行的正确结果
result  =  stdout.read()
 
# 关闭连接
ssh.close()
 
# 输出执行结果
print ( str (result, encoding = 'utf-8' ))

文件上传与下载

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#!/usr/bin/python
 
import  paramiko
 
=  paramiko.Transport(( '192.168.56.100' 22 ))
 
t.connect(username = "root" , password = "123456" )
 
sftp  =  paramiko.SFTPClient.from_transport(t)
 
# 远程目录
remotepath  =  '/tmp/id_rsa'
 
# 本地文件
localpath  =  'id_rsa'
 
# 上传文件
sftp.put(localpath, remotepath)
 
# 下载文件
# sftp.get(remotepath, localpath)
 
# 关闭连接
t.close()









本文转自 Edenwy  51CTO博客,原文链接:http://blog.51cto.com/edeny/1925811,如需转载请自行联系原作者
目录
相关文章
|
4月前
|
Ubuntu Python
python pathlib模块的学习
今天无意看到django 3.1的升级记录 就开始更新django了,然而只是更新了核心文件,项目层的都没有变, 就需要手动改从3.0.*升到3.1的文件 @(狂汗) 很想说,官方还没有完全改完吧... 因为只改了settings的文件(要不去提交一波 只需要把settings的os改成
32 0
|
7月前
|
Python
一分钟学一个 Python 标准库之 Pathlib
一分钟学一个 Python 标准库之 Pathlib
35 0
|
Unix Python
python 文件操作新姿势 pathlib模块的详细使用
相比常用的 os.path而言,pathlib 对于目录路径的操作更简介也更贴近 Pythonic。但是它不单纯是为了简化操作,还有更大的用途。 pathlib 是Python内置库,Python 文档给它的定义是:The pathlib module – object-oriented filesystem paths(面向对象的文件系统路径)。pathlib 提供表示文件系统路径的类,其语义适用于不同的操作系统。
276 0
python 文件操作新姿势 pathlib模块的详细使用
|
Unix API Python
每周一个 Python 模块 | pathlib
使用面向对象的 API 而不是低级字符串操作来解析,构建,测试和以其他方式处理文件名和路径。
106 0
|
Shell 数据安全/隐私保护 Python
第42天:Python paramiko 模块
第42天:Python paramiko 模块
160 0
|
网络安全 数据安全/隐私保护 Python
|
网络安全 数据安全/隐私保护 Python