Я пытаюсь запустить команду diag sys top-summary
на удаленном форте inet, чтобы защитить компьютер с брандмауэром и перехватить его вывод через библиотеку Paramiko python. Для такой команды, как get system status
, где вывод не является непрерывным, я получаю правильный вывод, но для тех команд, для которых вывод является непрерывным, я получаю стандартный вывод как
b'FG100D3G14809641 # Traceback (most recent call last):\r\n File "top.py", line 1371, in <module>\r\n main(int(opt.lines), int(opt.interval), opt.dump)\r\n File "top.py", line 1269, in main\r\n ch = _getch()\r\n File "top.py", line 78, in _getch\r\n return chr(Util.getch())\r\nValueError: chr() arg not in range(256)\r\n\r\nFG100D3G14809641 # '
Мой сценарий
import paramiko
# Also tried this function but no help
def line_buffered(f):
line_buf = ""
while not f.channel.exit_status_ready():
line_buf += str(f.read(1))
if line_buf.endswith('\n'):
yield line_buf
line_buf = ''
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
host = 'X.X.X.X'
port, user, password = 22, 'userName', 'Password'
ssh.connect(host, port, user, password)
stdin,stdout,stderr = ssh.exec_command("diag sys top-summary",get_pty=True)
print(stdout.read())
ssh.close()