【发布时间】:2023-02-16 15:19:30
【问题描述】:
我对 Paramiko 还很陌生,如果这个问题已经得到解答,我深表歉意
我正在尝试自动登录和执行 PAN 防火墙。 FW输出如下:
Last login: Wed Apr 27 11:54:01 2022 from 10.54.90.24
Number of failed attempts since last successful login: 0
admin@PA-5440-F03_31> show transceiver-detail all
我的代码如下:
>>> import paramiko
>>> command = "show transceiver-detail all"
>>> client = paramiko.client.SSHClient()
>>> client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
>>> client.connect(hostname, username=username, password=password)
>>> _stdin, _stdout, _stderr = client.exec_command(command)
>>> client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
>>> client.connect(hostname, username=username, password=password)
>>> _stdin, _stdout, _stderr = client.exec_command(command)
我的问题是,当我阅读 _stdout 时:
>>> print(stdout.read().decode())
我只得到横幅:
'\n\n\nNumber of failed attempts since last successful login: 0\n\n\n\n'
我如何到达 exec_command 返回由 stdout 捕获的输出的地步?
注意:在读取命令起作用之前,我必须明确关闭 _stdout 通道 (_stdout.channel.close())。不确定这是否是标准程序,或者我是否需要做些什么来确保频道自动关闭。
【问题讨论】:
-
事实证明,PAN 有自己的 Python 模块——pandevice——可以处理这个问题。
标签: paramiko