Chinaunix

标题: 使用paramiko 1.7.6(PY2.5-WINXP)登陆设备如何解翻页问题 [打印本页]

作者: ipv6ok    时间: 2010-06-28 09:41
标题: 使用paramiko 1.7.6(PY2.5-WINXP)登陆设备如何解翻页问题
本帖最后由 ipv6ok 于 2010-06-29 08:54 编辑

import paramiko
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect('192.168.1.1, username='view', password='123456')
stdin, stdout, stderr = ssh.exec_command('dis cu')
print stdout.read()
ssh.close()


192.168.1.1一台华为的设备,我登陆后执行命令dis cu(查看配置文件) 但是这个命令的输出经常(就算是执行UNIX的命令也有可能遇到需要翻页的吧)
我上面的代码会死掉,因为不知道如何解决翻页问题?大家有什么经验吗?
华为是按空格翻页;(当遇到---more---时就按空格就可以翻页了)
作者: nmweizi    时间: 2010-06-28 10:38
交互判断--more---
然后发空格给设备即可。
作者: ipv6ok    时间: 2010-06-28 15:43
我也了解了这个思路,楼上能给个源码参考一下吗??
另外,我发现使用ssh.exec_command的方法,执行多个命令。
作者: ipv6ok    时间: 2010-07-04 22:45
anybody help
作者: nmweizi    时间: 2010-07-06 10:02
在读返回前,可以设置成非阻塞状态。这时判断返回结果是否有more、其他或错误,然后就可以了。
可以查一下这个函数setblocking(self, blocking)
作者: nmweizi    时间: 2010-07-06 10:03
判断这个也行吧
recv_ready(self)
作者: nmweizi    时间: 2010-07-06 10:05
其实用pexpect挺好的,不过win下有些问题。
作者: ipv6ok    时间: 2010-07-09 09:33
嗯,我平时工作平台主要是使用WIN的所以就想改用WIN的模块来执行,但是遇到这个问题卡住了。
作者: julyzergcn    时间: 2010-07-09 12:03
import paramiko, threading, sys, time

host = 'host'
port = 22
usr = 'username'
pwd = 'password'
timeout = 3

trans = paramiko.Transport((host, port))
trans.connect(username=usr, password=pwd)

chan = trans.open_session()
chan.get_pty()
chan.invoke_shell()

def func(channel, f):
    while True:
        txt = channel.recv(256)
        if not txt:
            f.flush()
            break
        f.write(txt)
        f.flush()

def cmd(cmd_str):
    chan.sendall(cmd_str + '\n')
    time.sleep(timeout)
   
t = threading.Thread(target=func, args=(chan, sys.stdout))
t.setDaemon(1)
t.start()

cmd('pwd')
cmd('ls -lt')
cmd('cd some_dir)
cmd('pwd')
cmd('ls -lt')
cmd('more some_script.py')

cmd(' ')

trans.close()
作者: ipv6ok    时间: 2010-07-20 20:19
万分感谢热心的9楼兄弟,你以上代码好像没有对输出遇到--more--发送空翻页的?这个是执行多条命令的代码吧。我稍后测试一下看看。
作者: ipv6ok    时间: 2010-08-11 11:20
还是没办法翻页:wink:




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2