paramiko 用法

 Paramiko是基于python实现的SSH2远程安全连接,支持认证以及密钥方式,可以实现远程命令执行,文件传输,中间SSH代理等功能。也就是采用SSH的方式进行远程访问。

    其实python的用来ssh的模块还有一些,例如pexpect,在没用功paramiko之前,一直用的pexpect,这个模块就是基于shell的expect模块而来的。但是用了paramiko之后,pexpect就被我抛弃了。paramiko实在是太好用了,在网络里面用的最多的就是paramiko的channel方法。

    主要用法有如下方式:

def paramiko_function_try():
    hostname="x.x.x.x"
    username='root'
    password='root'
    ssh=paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    ssh.connect(hostname=hostname,username=username,password=password,timeout=10)
    stdin,stdout,stderr=ssh.exec_command('show cdp neighbor')
    print stdout.read()
【但是如果你是用linux系统,且/home/<user>/.ssh/id_rsa这个存在,那么上面这个方式,即使用户名密码正确,也还是会报错。这时候就需要加个参数,或者修改源码。就用加参数的方式吧

ssh.connect(hostname=hostname,username=username,password=password,timeout=10)这个里面需要变成ssh.connect(hostname=hostname,username=username,password=password,look_for_keys=False,timeout=10)】

在上面这个方式中,只能输一条命令。如果我要输多条命令呢?这时候就要引入交互式了。

d = ["enable","password","show cdp neighbor","show ip int brief"] #假设我们需要这些命令,因为交换机都有enable密码

hostname="x.x.x.x"
username='root'
password='root'
ssh=paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

ssh.connect(hostname=hostname,username=username,password=password,look_for_keys=False,timeout=10)

chan = ssh.invoke_shell()

for line in d:

    chan.send(line+"\n")

    print chan.recv(99999)

这个里面,通过send讲命令发送到设备上,然后recv是接收到的,我们可以根据自己的需求,从recv里获得的东西来定制化交互命令。

猜你喜欢

转载自www.cnblogs.com/eric-jiang/p/9711525.html