安装:

# 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模块的更多相关文章

  1. paramiko模块的安装

    1.找到自己python安装的目录(默认路径:C:\Users\zhangliyuan\AppData\Local\Programs\Python\Python35) 注:cmd中所有命令 2.进入S ...

  2. python远程连接paramiko 模块和堡垒机实现

    paramiko使用 paramiko模块是基于python实现了SSH2远程安全连接,支持认证和密钥方式,可以实现远程连接.命令执行.文件传输.中间SSH代理功能 安装 pip install pa ...

  3. 利用paramiko模块实现堡垒机+审计功能

    paramiko模块是一个远程连接服务器,全真模拟ssh2协议的python模块,借助paramiko源码包中的demos目录下:demo.py和interactive.py两个模块实现简单的堡垒机+ ...

  4. 在Windows和Linux上安装paramiko模块以及easy_install的安装方法

    一.paramiko模块有什么用? paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.由于使用的是python这样的能够跨平台运行的语言 ...

  5. paramiko模块-2

    如何用paramiko模块模拟登入服务器,并记录操作日志,起到审计的作用? 各个client ---(连接跳转机)--->(跳转机)------>各自的目标服务器. 目前我们公司的跳转机, ...

  6. Win7下Python2.7环境安装paramiko模块

    Win7下Python2.7环境安装paramiko模块,经过安装并测试成功,整理文档如下: 1.下载安装Windows版本的Python2.7,我默认装在C:\Python27 我的python已经 ...

  7. Python Paramiko模块与MySQL数据库操作

    Paramiko模块批量管理:通过调用ssh协议进行远程机器的批量命令执行. 要使用paramiko模块那就必须先安装这个第三方模块,仅需要在本地上安装相应的软件(python以及PyCrypto), ...

  8. paramiko模块,线程,进程

    关于paramiko模块 paramiko是基于Python实现的ssh2远程安全连接,支持认证及密钥方式远程执行命令.文件传输,中间ssh代理等 paramiko的安装: 安装好之后,用parami ...

  9. Python paramiko 模块

    paramiko模块机遇SSH用于连接远程服务器并执行相关操作 SSHClient 用于连接远程服务器并执行基本命令 基于用户名密码连接: import paramiko # 创建SSH对象 ssh ...

随机推荐

  1. ruby发送邮件方法

    #encoding:utf-8require 'mail'def send_email sum,fail,case_path,name,receive smtp = { :address => ...

  2. Gson--Gson解析=等号出现乱码?

    GSON使用笔记(1) -- 序列化时排除字段的几种方式 --3,关于Gson解析时候特殊符号,被转义的问题,如'单引号? //Creating the JSON object, and gettin ...

  3. 可重入锁 公平锁 读写锁、CLH队列、CLH队列锁、自旋锁、排队自旋锁、MCS锁、CLH锁

    1.可重入锁 如果锁具备可重入性,则称作为可重入锁. ========================================== (转)可重入和不可重入 2011-10-04 21:38 这 ...

  4. Android 对话框(Dialog)大全 建立你自己的对话框

    Android 对话框(Dialog)大全 建立你自己的对话框 原文地址: http://www.cnblogs.com/salam/archive/2010/11/15/1877512.html A ...

  5. android中Json的一些应用

    JSON(JavaScript Object Notation) :一种轻量级的数据交换格式,基于JavaScript的一个子集. JSON采用完全独立于语言的文本格式,使JSON成为理想的数据交换语 ...

  6. 修改Oracle字符集为 ZHS16GBK

    SQL*Plus: Release 11.2.0.1.0 Production on Wed Aug 10 13:12:48 2016 Copyright (c) 1982, 2009, Oracle ...

  7. Unreal Engine 4 一些小技巧或提示

    怎样获取当前地图的名字 在任意Actor类里,GetWorld()->GetName()就可以获得当前地图的名字

  8. 介绍Unreal Engine 4中的接口(Interface)使用C++和蓝图

    这个教程是从UE4 Wiki上整理而来. 在C++中直接使用Interface大家应该很熟悉.只是简单先定义一个个有虚函数的基类,然后在子类中实现相应的虚函数.像这样的虚函数的基类一般概念上叫接口.那 ...

  9. AE开发示例之RunGPAsync

    using System; using System.Collections.Generic;using System.ComponentModel;using System.Data;using S ...

  10. LPC2478_调试心得(转)

    1.在调试“E:\htwang\smart2200v201\ARM嵌入式系统实验教程(二)\开发板出厂编程程序\液晶显示程序\LCM_Disp”的程序时,想使用外部RAM进行仿真调试,在将ADS1.2 ...