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 ...
随机推荐
- Git使用培训
1.VS“扩展和更新”菜单,NuGet 2.通过“扩展和更新”,联机搜索git,安装“Git Extensions”和“Git Source Control Provider” 3.通过Git命令配置 ...
- 树莓派开启root用户
树莓派系统使用的linux是debian系统,所以树莓派启用root和debian是相同的. debian里root账户默认没有密码,但账户锁定. 当需要root权限时,由默认账户经由sudo执行,R ...
- Win7系统安装好Axure点击运行报.NET Framework4.0未安装的解决办法
1:问题 由于工作需要,需要研究一下Axure原型设计软件的使用方式,在公司的电脑上成功安装了从同事那里拿来的Axure7.0软件,能够正确运行没有任何问题,在自己的电脑上安装的也非常顺利,不过运 ...
- SOCKET 服务器停止服务时清理连接操作
刚想到一个情况,正好是工作中遇到的. 当服务器停止时,正好有连接的请求正在被处理,而此时服务端需要等待该请求被正常的处理完,然后给客户端发送响应报文. 正常情况下,服务器停止的时候,是希望发送了响应报 ...
- source 源码下载
http://blog.csdn.net/zlgydx/article/details/50781258 经常需要查看某些第三方的源码,一直在用的一个网站,功能比较简介.好用. http://grep ...
- step by step install Caffe
Caffe + Ubuntu 14.04 + CUDA 8 + cudnn 8.0+Ananconda3+opencv3.0.0 //由于本人使用的是英文版ubuntu,没装汉语输入法,暂时就用蹩脚的 ...
- CentOS linux下安装和配置Apache+SVN(用浏览器http方式访问SVN目录)
在CentOS linux下安装SVN,我们可以进行以下步骤: 第一步:安装CentOS Linux操作系统,并在CentOS安装进行的同时,自定义安装这一步,一定要勾选Subversion(在“开发 ...
- 将Java应用程序打包成可执行的Jar包
可以将多个class文件打包为jar包,在指定程序入口点情况下,可以用 java –jar jar包名称 的方式调用jar包内主类的main函数. 程序源代码如下: //Math.java publi ...
- 慕课网-Java入门第一季-7-5 Java 中带参无返回值方法的使用
public class HelloWorld { public static void main(String[] args) { // 创建对象,对象名为hello HelloWorld hell ...
- msChart组件安装与编程
首先下载mschart.ocx文件,至于它所依赖的.net环境,网上有很多,本人下载的插件给出链接,http://www.cr173.com/soft/47300.html而它所依赖的环境可以从我的云 ...