paramiko

1、简介
  大家会发现,常见的解决方法都会需要对远程服务器必要的配置,如果远程服务器只有一两台还好说,如果有N台,还需要逐台进行配置,或者需要使用代码进行以上操作时,上面的办法就不太方便了。


  使用paramiko可以很好的解决以上问题,比起前面的方法,它仅需要在本地上安装相应的软件(python以及PyCrypto),对远程服务器没有配置要求,对于连接多台服务器,进行复杂的连接操作特别有帮助。


2、安装
  安装paramiko有两个先决条件,python和另外一个名为PyCrypto的模块。


  通常安装标准的python模块,只需要在模块的根目录下运行:


python setup.py build


python setup.py install


备注:安装前先检查是否安装gcc(yum -y install gcc)


2.1 PyCrypto安装


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


  (编译时报错:error: command 'gcc' failed with exit status 1;这是因为缺少python-dev的软件包,所yum -y install python-devel)


2.2 paramiko安装


wget 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


Crypto error: 'module' object has no attribute 'HAVE_DECL_MPZ_POWM_SEC'


  测试:


python>> import paramiko


  (Crypto error: 'module' object has no attribute 'HAVE_DECL_MPZ_POWM_SEC'


  找到 /usr/lib/python2.7/site-packages/Crypto/Util/number.py


  把if _fastmath is not None and not _fastmath.HAVE_DECL_MPZ_POWM_SEC:


  注释了


  #if _fastmath is not None and not _fastmath.HAVE_DECL_MPZ_POWM_SEC:


  )


3、使用
3.1 执行远程命令


#!/usr/bin/python


import paramiko


 


ssh = paramiko.SSHClient()


ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())


ssh.connect("某IP地址",22,"用户名", "口令")


stdin, stdout, stderr = ssh.exec_command("你的命令")


print stdout.readlines()


ssh.close()


3.2 上传文件到远程


#!/usr/bin/python


import paramiko


 


t = paramiko.Transport(("某IP地址",22))


t.connect(username = "用户名", password = "口令")


sftp = paramiko.SFTPClient.from_transport(t)


remotepath='/tmp/test.txt'


localpath='/tmp/test.txt'


sftp.put(localpath,remotepath)


t.close()


3.3 从远程下载文件


#!/usr/bin/python


import paramiko


 


t = paramiko.Transport(("某IP地址",22))


t.connect(username = "用户名", password = "口令")


sftp = paramiko.SFTPClient.from_transport(t)


remotepath='/tmp/test.txt'


localpath='/tmp/test.txt'


sftp.get(remotepath, localpath)


t.close()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值