python学习之---- paramiko 模块
paramiko 模块
功能:提供了ssh及sftp进行远程登录服务器执行命令和上传下载文件的功能。这是一个第三方的软件包,使用之前需要安装。
1 基于用户名和密码的 sshclient 方式登录
执行过程:传统的连接服务器、执行命令、关闭的一个操作
import paramiko # 实例化一个客户端
ssh_client = paramiko.SSHClient()
# 实现自动添加ssh信任关系knows_hosts
ssh_client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接远程linux目标机
ssh_client.connect(hostname='ip',port=22,username='root',password='paswd')
# 在远程服务器执行命令
stdin,stdout,stderr = ssh_client.exec_command('df -h')
# 读取标准输出和标准错误
out,err = stdout.read(),stderr.read()
# 打印输出的信息
mess = out if out else err
print(mess.decode())
# 关闭客户端连接
ssh_client.close()
2 基于用户名和密码的 transport 方式登录
执行过程:连接服务器,执行上传,下载,关闭操作
import paramiko
# 定义传输的ip和端口
transfer = paramiko.Transport('10.10.2.12',22)
# 定义传输的账号,密码
transfer.connect(username='root',password='passwd')
# 建立sftp连接
sftp = paramiko.SFTPClient.from_transport(transfer)
# 上传
sftp.put('源文件','目标文件')
# 下载
sftp.get('服务器文件,'本地文件')
# 关闭连接
transfer.close()
3 基于公钥密钥的 SSHClient 方式登录
# 指定本地的RSA私钥文件,如果建立密钥对时设置的有密码,password为设定的密码,如无不用指定password参数
pkey = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa', password='')
# 建立连接
ssh = paramiko.SSHClient()
ssh.connect(hostname='ip',port=22,username='user',pkey=pkey)
# 执行命令
stdin, stdout, stderr = ssh.exec_command('df -hl')
# 结果放到stdout中,如果有错误将放到stderr中
print(stdout.read().decode())
# 关闭连接
ssh.close()
4 基于密钥的 Transport 方式登录
# 指定本地的RSA私钥文件,如果建立密钥对时设置的有密码,password为设定的密码,如无不用指定password参数
pkey = paramiko.RSAKey.from_private_key_file('/root/.ssh/id_rsa', password='')
# 建立连接
trans = paramiko.Transport(('ip', 22))
trans.connect(username='user', pkey=pkey) # 将sshclient的对象的transport指定为以上的trans
ssh = paramiko.SSHClient()
ssh._transport = trans # 执行命令,和传统方法一样
stdin, stdout, stderr = ssh.exec_command('df -hl')
print(stdout.read().decode()) #
sftp = paramiko.SFTPClient.from_transport(trans)
sftp.put('src_file,'dst_file')
sftp.get('dst_file,'src_file)
# 关闭连接
trans.close()
小技巧:
修改 paramiko模块的源码,将用户的输入进行文件保存
首先从github下载模块的源码包,打开 demmos\interactive.py文件,跳转到49行,添加如下:
# 这里开始输入命令的监听
cmd_list = [] # 用于记录用户的输入的每个键
while True:
r, w, e = select.select([chan, sys.stdin], [], []) # 进入监听状态
if chan in r:
try:
x = u(chan.recv(1024))
if len(x) == 0:
sys.stdout.write('\r\n*** EOF\r\n')
break
sys.stdout.write(x)
sys.stdout.flush()
except socket.timeout:
pass
if sys.stdin in r:
x = sys.stdin.read(1) # 这里的1 代表读取用户敲击的每一个键
if len(x) == 0:
break
# 将用户输入的命令进行写文件保存,当遇到键盘输入为回车,则开发文件写入用户输入的命令,如果没有回车,则
# 将用户键盘输入的每一个键进行列表添加
if x == '\r': # 为回车则写文件
f = open('./stdin.log','w')
cmd_str = ''.join(cmd_list)
f.write(cmd_str+'\r')
f.close()
else:
cmd_list.append(x)
chan.send(x)
这样就把用户的输入保存到stdin.log文件中了。
python学习之---- paramiko 模块的更多相关文章
- python 学习分享-paramiko模块
paramiko模块学习分享 paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.paramiko支持Linux, Solaris, BS ...
- Python学习 Part4:模块
Python学习 Part4:模块 1. 模块是将定义保存在一个文件中的方法,然后在脚本中或解释器的交互实例中使用.模块中的定义可以被导入到其他模块或者main模块. 模块就是一个包含Python定义 ...
- python学习之argparse模块
python学习之argparse模块 一.简介: argparse是python用于解析命令行参数和选项的标准模块,用于代替已经过时的optparse模块.argparse模块的作用是用于解析命令行 ...
- Python学习day19-常用模块之re模块
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- Python学习day18-常用模块之NumPy
figure:last-child { margin-bottom: 0.5rem; } #write ol, #write ul { position: relative; } img { max- ...
- Python 学习记录之----模块 paramiko
paramiko 一.安装 pip3.5 install paramiko pip3.5 install pycrypto # pycrypto,由于 paramiko 模块内部依赖pycrypto, ...
- python远程连接paramiko 模块和堡垒机实现
paramiko使用 paramiko模块是基于python实现了SSH2远程安全连接,支持认证和密钥方式,可以实现远程连接.命令执行.文件传输.中间SSH代理功能 安装 pip install pa ...
- python学习笔记五 模块下(基础篇)
shevle 模块 扩展pickle模块... 1.潜在的陷进 >>> import shelve>>> s = shelve.open("nb" ...
- python学习之random模块
Python中的random模块用于生成随机数.下面介绍一下random模块中最常用的几个函数. random.random random.random()用于生成一个0到1的随机符点数: 0 < ...
随机推荐
- Android原生系统API自带dp、px、sp单位转换
Android系统中自带的Api中可以使用TypedValue进行单位转换 1,调用系统api转换单位 // 获得转换后的px值 float pxDimension = TypedValue.appl ...
- (转)新手学习System Verilog & UVM指南
从刚接触System Verilog以及后来的VMM,OVM,UVM已经有很多年了,随着电子工业的逐步发展,国内对验证人才的需求也会急剧增加,这从各大招聘网站贴出的职位上也可以看出来,不少朋友可能想尽 ...
- Mac上安装Homebrew和wget
实际上是使用Homebrew来安装wget 安装Homebrew Homebrew一般称为brew,是Mac OSX上的软件包管理工具,能在Mac中方便的安装软件或者卸载软件, 只需要一个命令, 非常 ...
- 【HEVC简介】Inter Prediction Tools
参考文献:见<High Efficiency Video Coding (HEVC)>Inter-Picture Prediction in HEVC章节 <HEVC标准介绍.HEV ...
- php 批量依照ID建立 文件
<?php // 登录验证 include_once('inc/conn.php'); // sql查询 $sql="SELECT * FROM zcgl ";// $res ...
- L2-2 社交集群 (25 分)(一个写挫的并查集)
题目: 思路: 就是一个并查集的裸题,不过在数据查找方面可能不好处理,暴力完全可以解决这个问题啊!! #include <bits/stdc++.h> #include <cstdi ...
- C++ 给自己的扫盲笔记
1.运算符new分配内存的格式: 指针变量名 = new 类型: 如分配一个20字节的name变量 :name = new char[20]; 2.strlen(s);函数: 返回字符串s的长度 ...
- 访问修饰词--Java
public(公共的) 权限: 完全公开 protected(受保护的) 权限: 对子类和同包中的其他类公开 default(默认的,可不写) 权限: 对同包中的其他类公开 private(私有的) ...
- 5. COLUMNS
5. COLUMNS 表COLUMNS提供表中列的信息. INFORMATION_SCHEMA Name SHOW Name Remarks TABLE_CATALOG TABLE_SCHEMA TA ...
- 学习vue之windows下安装live-server 超级详细篇
最近项目要求用vue2.0所以开始着手学习. 前期准备: 下载Node.js 地址:http://nodejs.cn/download/ 选择自己对应的版本,我下载的是.msi 64位的 然后就双击下 ...