因此,我对开发相当陌生,所以我决定一个好的自学方法是创建一个小脚本,通过SSH配置Cisco交换机/路由器。 我有点困在一个循环上。在
基本上用户已经通过SSH进入交换机用户名@ip_地址现在他们需要输入密码。 不过,我需要的是,如果失败,它将返回到需要登录密码(因为很可能是因为输入了错误的密码)
x = 'false5'
while x != 'true5':
switch_ssh_password = raw_input('What is the Login Password: ')
#Commands to grant entry level access
child.expect('password:')
child.sendline(switch_ssh_password)
if child.expect('%>'):
print "1 - Entry to Switch was Granted"
x = 'true5'
else:
print "1 - Entry to Switch was Denied, Try Again"
x = 'false5'
现在当我进入这个用户输入,我输入密码,它挂起大约30秒,然后返回这个,我不知道出了什么问题:(
^{pr2}$
所以我重写了你的代码,就好像我自己在写一样,(还把你的一些东西放在那里)测试了它并确保它正常工作,你可以在这里看到它:
Pastebin code
我的编码风格是多种语言和风格的混合体,所以不要太专注于此。但是,看看我是如何处理IP地址的。在这个过程中,我确实发现了一些错误:
1)expect函数可以捕捉超时,而不是引发异常。这是一个更好的编程实践。执行此操作时,它将返回找到的项的列表中的索引(在本例中为0)。您应该花些时间阅读pexpect的完整文档,使用搜索功能它帮助很大,这些模块通常非常强大,功能也很丰富,所以您可能会错过您需要的真正功能,可以说,您在自己的代码中重新发明了轮子。在
2)如果你看看你的错误,你可以看到:
因此,它确实成功地连接到主机nryan-sw01,您现在看到的是一个提示符,但您要查找的是“%>;”,而不仅仅是“>;”
如果没有你所有的代码,你很难弄清楚到底发生了什么。但是根据您发布的查找shell字符的超时信息,对于一些额外的诊断,我将稍微更改一下您的代码:
相关问题 更多 >
编程相关推荐