我正在使用 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() 返回的文件描述符。
我见过的大多数关闭回声的建议都需要在远程机器上发出 bash 命令,例如“stty -echo”,但 Cisco 路由器没有运行 bash。