gpt4 book ai didi

python - 使用Paramiko时如何关闭本地回声?

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

我正在使用 Paramiko 连接到远程 Cisco 路由器和交换机。连接到这些设备时,我希望能够在进入“配置”模式时关闭回声。这样,我就可以向远程系统发出命令,避免看到它们返回(从而只专注于查找错误消息)。

我正在执行以下命令以获取 Cisco 设备的 shell:

    self.chan = self.transport.open_session()
self.chan.get_pty()
self.chan.invoke_shell()

现在,我希望能够为 pty 获取 paramiko 的文件描述符并发出如下内容:

    fd = self.chan.fileno()
old = termios.tcgetattr(fd)
old[3] = old[3] | termios.ECHO
termios.tcsetattr(fd, termios.TCSADRAIN, old)

但是,termios 会阻塞 chan.fileno() 返回的文件描述符。

大多数suggestions要关闭回声,我已经看到需要在远程机器上发出像“stty -echo”这样的 bash 命令,但是 Cisco 路由器没有运行 bash。

最佳答案

在花了很多时间之后,我最终回到了 pxssh图书馆。这个库明确地有一种方法来关闭回声:

    connection.setecho(False)

...这正是我所需要的。它还(通过父模块 pexpect )有一种方法可以使用完全相同的库基础设施来处理 telnet(不幸的是,这在 Cisco 世界中仍然经常需要),因此您可以拥有一个使用 telnet 或 ssh 的连接对象它的工作方式完全相同。

虽然 Paramiko 看起来更干净、维护得更好,但 Paramiko 社区的共识似乎是,如果你想停止回显,你需要告诉远程系统不要回显。但是当远程系统不是 linux/bash 进程时,这就变得困难或不可能了。 Pxssh 是您对 ssh session 进行更细粒度控制所需的库。

关于python - 使用Paramiko时如何关闭本地回声?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15912226/

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