paramiko模块
安装:
# pycrypto,由于 paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto
(1)
wget http://ftp.dlitz.net/pub/dlitz/crypto/pycrypto/pycrypto-2.6.tar.gz
tar -zxvf pycrypto-2.6.tar.gz
cd pycrypto-2.6/
python setup.py build && python setup.py install (可能报错)
python>> import Crypto
这是因为缺少python-dev的软件包,所:yum -y install python-devel (编译时报错:error: command 'gcc' failed with exit status 1;这是因为缺少python-dev的软件包,所yum -y install python-devel)
(2)
get http://www.lag.net/paramiko/download/paramiko-1.7.7.1.tar.gz
tar xvzf paramiko-1.7.7.1.tar.gz
cd paramiko-1.7.7.1/
python setup.py build && python setup.py install # 进入python环境,导入paramiko检查是否安装成功
1.paramiko执行命令(用户名密码方式),(分为用SSHClient对象与Transport对象两种)
#!/bin/usr/env python
#-*- coding:utf-8 -*-
import paramiko ssh = paramiko.SSHClient()# 创建SSH对象 ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 允许连接不在know_hosts文件中的主机
ssh.connect(hostname='10.1.1.10', port=22, username='ganzl', password='')# 连接服务器
stdin, stdout, stderr = ssh.exec_command('df')# 执行命令
result = stdout.read()# 获取命令结果
print result ssh.close() # 关闭连接
#!/bin/usr/env python
#-*- coding:utf-8 -*- import paramiko transport = paramiko.Transport(('10.1.1.10', 22))
transport.connect(username='ganzl', password='') ssh = paramiko.SSHClient()
ssh._transport = transport stdin, stdout, stderr = ssh.exec_command('df')
print stdout.read() transport.close()
2.paramiko执行命令(公钥方式),(分为用SSHClient对象与Transport对象两种)
#-*- coding:utf-8 -*-
import paramiko private_key = paramiko.RSAKey.from_private_key_file('/home/ganzl/.ssh/id_rsa') ssh = paramiko.SSHClient()# 创建SSH对象
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())# 允许连接不在know_hosts文件中的主机
ssh.connect(hostname='10.1.1.10', port=22, username='ganzl',pkey=private_key)# 连接服务器
stdin, stdout, stderr = ssh.exec_command('df')# 执行命令
result = stdout.read()# 获取命令结果
print result ssh.close()# 关闭连接
#!/bin/usr/env python
#-*- coding:utf-8 -*- import paramiko
private_key = paramiko.RSAKey.from_private_key_file('/home/ganzl/.ssh/id_rsa')
transport = paramiko.Transport(('10.1.1.10', 22))
transport.connect(username='ganzl', pkey=private_key) ssh = paramiko.SSHClient()
ssh._transport = transport stdin, stdout, stderr = ssh.exec_command('df')
print stdout
print stdin
print stderr transport.close() 这个在执行结果上如下:
-----------------------
<paramiko.ChannelFile from <paramiko.Channel 1 (open) window=2097152 -> <paramiko.Transport at 0x2407eb10L (cipher aes128-ctr, 128 bits) (active; 1 open channel(s))>>>
<paramiko.ChannelFile from <paramiko.Channel 1 (open) window=2097152 -> <paramiko.Transport at 0x2407eb10L (cipher aes128-ctr, 128 bits) (active; 1 open channel(s))>>>
<paramiko.ChannelFile from <paramiko.Channel 1 (open) window=2097152 -> <paramiko.Transport at 0x2407eb10L (cipher aes128-ctr, 128 bits) (active; 1 open channel(s))>>> 这个方式的执行结果有时间了,再整明白下。
3.FTP进行上传下载文件
#!/bin/usr/env python
#-*- coding:utf-8 -*-
import paramiko private_key = paramiko.RSAKey.from_private_key_file('/home/ganzl/.ssh/id_rsa')
transport = paramiko.Transport(('10.1.1.10', 22))
transport.connect(username='ganzl', pkey=private_key) sftp = paramiko.SFTPClient.from_transport(transport)#然后创建SFTPClient并基于transport连接,把他俩做个绑定
sftp.put('/home/ganzl/bak/beifen-lianlian.sh', '/home/ganzl/bak/beifen-lianlian.sh')
sftp.get('/home/ganzl/bak/test.sh', '/home/ganzl/bak/test.sh')
transport.close()
#-*- coding:utf-8 -*-
import paramiko transport = paramiko.Transport(('10.1.1.10',22))
transport.connect(username='ganzl',password='') sftp = paramiko.SFTPClient.from_transport(transport) sftp.put('/home/ganzl/bak/beifen-lianlian.sh', '/home/ganzl/bak/beifen-lianlian.sh')
sftp.get('/home/ganzl/bak/test.sh', '/home/ganzl/bak/test.sh') transport.close()
为什么要搞两种方式,应该是SSHClient对象不支持文件的上次下载,而Transport这个类是对SSHClient类的封装。
写代码的时候,尽量放到一起。
用面向对象的方式将登入,执行命令,上次下载放到不同的方法里:
#!/sur/bin/env python
# -*- coding:utf-8 -*-
__author__ = 'ganzl'
import uuid
import paramiko class properties(object):
def __init__(self):
self.host = '10.1.1.10'
self.port = 22
self.username = 'ganzl'
self.password = '123456' def creat_file(self):
str_file = str(uuid.uuid4())
with open(str_file,'w') as f:
f.write('写入配置文件内容,或者拿到配置文件')
return str_file def connect(self):
transport = paramiko.Transport((self.host,self.port))
transport.connect(username=self.username,password=self.password)
self.conn = transport def close(self):
self.conn.close() def upload(self):
file_name = self.creat_file()
sftp = paramiko.SFTPClient.from_transport(self.conn)
sftp.put(file_name, '/home/lbsweb/bak/beifen-lianlian.sh') def download(self):
sftp = paramiko.SFTPClient.from_transport(self.conn)
sftp.get('/home/lbsweb/bak/test.sh', '/home/ganzl/bak/test.sh') def my_cmd(self):
ssh = paramiko.SSHClient()
ssh._transport = self.conn #注意,这里是将封装的transport放到SSHClient中去,执行命令
stdin, stdout, stderr = ssh.exec_command('df')# 执行命令
result = stdout.read()
print result def run(self):
self.connect()
self.my_cmd()
#self.upload() 这里测试只执行命令。
self.close() pro = properties()
pro.run()
paramiko模块的更多相关文章
- paramiko模块的安装
1.找到自己python安装的目录(默认路径:C:\Users\zhangliyuan\AppData\Local\Programs\Python\Python35) 注:cmd中所有命令 2.进入S ...
- python远程连接paramiko 模块和堡垒机实现
paramiko使用 paramiko模块是基于python实现了SSH2远程安全连接,支持认证和密钥方式,可以实现远程连接.命令执行.文件传输.中间SSH代理功能 安装 pip install pa ...
- 利用paramiko模块实现堡垒机+审计功能
paramiko模块是一个远程连接服务器,全真模拟ssh2协议的python模块,借助paramiko源码包中的demos目录下:demo.py和interactive.py两个模块实现简单的堡垒机+ ...
- 在Windows和Linux上安装paramiko模块以及easy_install的安装方法
一.paramiko模块有什么用? paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.由于使用的是python这样的能够跨平台运行的语言 ...
- paramiko模块-2
如何用paramiko模块模拟登入服务器,并记录操作日志,起到审计的作用? 各个client ---(连接跳转机)--->(跳转机)------>各自的目标服务器. 目前我们公司的跳转机, ...
- Win7下Python2.7环境安装paramiko模块
Win7下Python2.7环境安装paramiko模块,经过安装并测试成功,整理文档如下: 1.下载安装Windows版本的Python2.7,我默认装在C:\Python27 我的python已经 ...
- Python Paramiko模块与MySQL数据库操作
Paramiko模块批量管理:通过调用ssh协议进行远程机器的批量命令执行. 要使用paramiko模块那就必须先安装这个第三方模块,仅需要在本地上安装相应的软件(python以及PyCrypto), ...
- paramiko模块,线程,进程
关于paramiko模块 paramiko是基于Python实现的ssh2远程安全连接,支持认证及密钥方式远程执行命令.文件传输,中间ssh代理等 paramiko的安装: 安装好之后,用parami ...
- Python paramiko 模块
paramiko模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: import paramiko # 创建SSH对象 ssh ...
随机推荐
- Python的第二天
一.while循环语句 Python 编程中 while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务.其基本形式为: while 判断条件: 执行语句-- 执行 ...
- mysql新建表示,时间字段timetamp碰到的问题
在mysql中创建表时,在新加的字段时间上,碰到下面的问题: 建表语句如下: CREATE TABLE seckill( seckill_id bigint NOT NULL AUTO_INCREME ...
- sql ROW_NUMBER() 排序函数 (转)
1使用row_number()函数进行编号:如 select email,customerID, ROW_NUMBER() over(order by psd) as rows from QT_Cus ...
- 关于delegate(代理)总结
stackoverflow 上讲解:http://stackoverflow.com/a/12660523/4563358 delegate是将需要处理交给自己的代理. 在自己的对应的类中.h文件中 ...
- es let2
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- File存对象--android 的File存储到SD卡();
方法1:android File存对象--File存储到SD卡(); 1.保存对象到本地或SD卡需要注意的是,要保存的对象(OAuthV1)一定要实现了Serializable接口.实现了Serial ...
- iOS UIButton单双击处理响应不同的方法
//显示目标 双击显示当前用户坐标位置 UIButton * btnShowDistination = [[UIButton alloc]initWithFrame:CGRectMake(, SCRE ...
- 改写jquery.validate.unobtrusive.js实现气泡提示mvc错误
个人对于这个js.css不是很擅长,所以这个气泡提醒的样式网上找了下,用了这个http://www.cnblogs.com/wifi/articles/2918950.html当中的第一种写法. 对于 ...
- 转I2s
转自http://blog.csdn.net/ce123/article/details/6919954 I2S音频总线学习(二)I2S总线协议 一.I2S总线概述 音响数据的采集.处理和传输是多媒体 ...
- archlinux 打印机驱动安装
#安装驱动# pacman -S cups ghostscript gsfonts gutenprint#启动服务# systemctl start/enable org.cups.cupsd.ser ...