gpt4 book ai didi

python - pxssh 连接到 ssh 代理; read_nonblocking() 超时

转载 作者:太空宇宙 更新时间:2023-11-04 10:40:16 25 4
gpt4 key购买 nike

所以我尝试了几个模块,包括 pxssh、pexpect 等,但我似乎无法与我们的 ssh 代理建立 ssh 连接。基本上我想做的是使用我们的 SSH 代理,它可以访问我们其余的设备作为到其他设备的跳转点,然后运行命令。这在 ipython 中有效,但是当它连接时会引发下面列出的异常,但是它会继续执行其余命令并且工作正常。但是,当仅作为 python 脚本运行时,它只会导致脚本失败。我会假设它因为异常而失败。有没有办法关闭异常,或者阻止它退出?还是我做错了?

我也试过弄乱提示设置和 auto_prompt_reset 设置...

代理主机不是真正的 linux 主机,也不是 cisco 主机,这可能是默认设置不起作用的原因。

不太确定从这里到哪里去,所以任何帮助或见解都会很棒。

import pxssh
s = pxssh.pxssh()
hostname = '10.10.10.4'
username = 'username'
password = 'password!'
s.login (hostname, username, password)
s.sendline ('connect 10.10.5.1')
s.prompt(timeout=2)
print s.before
s.endline ('')
s.sendline ('show run')
s.prompt(timeout=2)
print s.before

发布的异常。

In [40]: s.login (hostname, username, password)
---------------------------------------------------------------------------
TIMEOUT Traceback (most recent call last)
<ipython-input-40-51f00f2075f5> in <module>()
----> 1 s.login (hostname, username, password)

/usr/lib/python2.7/dist-packages/pxssh.pyc in login(self, server, username, password, terminal_type, original_prompt, login_timeout, port, auto_prompt_reset)
241 self.close()
242 raise ExceptionPxssh ('unexpected login response')
--> 243 if not self.synch_original_prompt():
244 self.close()
245 raise ExceptionPxssh ('could not synchronize with original prompt')

/usr/lib/python2.7/dist-packages/pxssh.pyc in synch_original_prompt(self)
132 # If latency is worse than these values then this will fail.
133
--> 134 self.read_nonblocking(size=10000,timeout=1) # GAS: Clear out the cache before getting the prompt
135 time.sleep(0.1)
136 self.sendline()

/usr/lib/python2.7/dist-packages/pexpect.pyc in read_nonblocking(self, size, timeout)
822 raise EOF ('End of File (EOF) in read_nonblocking(). Very pokey platform.')
823 else:
--> 824 raise TIMEOUT ('Timeout exceeded in read_nonblocking().')
825
826 if self.child_fd in r:

TIMEOUT: Timeout exceeded in read_nonblocking().

最佳答案

在为自己研究之后,我在 Stackoverflow 上看到了另一篇文章,提问者在其中发布了他们的解决方案。我测试了该解决方案,它也适用于我自己。问题是 usr/lib/python.2.6/dist-packages/pxssh.py 中的代码片段已过时/缺失。 (它也可能在 usr/lib/python.2.6/site-packages/pxssh.py 中)。

导航到该文件并添加以下代码行:

self.sendline() #Line 134
time.sleep(0.5) #Line 135

这应该插入到行的正上方

self.read_nonblocking(size=10000,timeout=1) # GAS: Clear out the cache before getting the prompt

中提琴,再次运行您的代码,它应该会像魅力一样工作。归功于:python pexpect: SSHing then updating the date

关于python - pxssh 连接到 ssh 代理; read_nonblocking() 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21055943/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com