您的位置:首页 > 编程语言 > Python开发

使用python的Paramiko模块登陆SSH

2015-06-21 10:35 453 查看
paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接。

python的paramiko模块可以方便的实现ssh登录,并执行命令。

1. paramiko模块安装

1.1安装pycrypto库

下载地址请戳这里:http://download.csdn.net/detail/oatnehc/8825715

pycrypto库的主页在这里:https://www.dlitz.net/software/pycrypto/

pycrypto库安装方法

python setup.py build && python setup.py install


1.2安装paramiko

paramiko下载地址:http://download.csdn.net/detail/oatnehc/8825743

paramiko库的主页在这里:https://pypi.python.org/pypi/paramiko

paramiko库的安装方法超级简单。

python setup.py build && python setup.py install


2.简单使用

2.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()


2.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()


2.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()


3.高级用法

通常需要对多个服务器或者虚拟机进行管理,可以采用批量的方式进行。

#-*- coding: utf-8 -*-
#!/usr/bin/python
import paramiko
import threading
def ssh2(ip,username,passwd,cmd):
try:
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(ip,22,username,passwd,timeout=5)
for m in cmd:
stdin, stdout, stderr = ssh.exec_command(m)
out = stdout.readlines()
for o in out:
print o,  #屏幕输出
print '%s\tOK\n'%(ip)
ssh.close()
except :
print '%s\tError\n'%(ip)
if __name__=='__main__':
cmd = ['echo hello!']#需要执行的命令列表
username = "root"  #用户名
passwd = "root"    #密码
threads = []   #多线程
print "Begin excute......"
for i in range(1,254):
ip = '192.168.1.'+str(i)
a=threading.Thread(target=ssh2,args=(ip,username,passwd,cmd))
a.start()


参考

/article/4874050.html

http://www.oschina.net/p/paramiko

http://developer.51cto.com/art/201206/340118.htm
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: