paramiko не выполняет команду basi c на машине - PullRequest
0 голосов
/ 05 февраля 2020

Я пытаюсь выполнить команду basi c на устройстве, используя paramiko («show clock», который отображает время):

#!/usr/bin/python

import paramiko
import time
import re


hostname = 'HIDDEN1'
port = '22'
username = 'admin'
password = 'HIDDEN2'

if __name__ == "__main__":
   s = paramiko.SSHClient()
   s.load_system_host_keys()
   s.set_missing_host_key_policy(paramiko.AutoAddPolicy())
   s.connect(hostname, port, username, password, timeout=3)

   command = 'show clock'
   print("Starting...")
   stdin, stdout, stderr = s.exec_command(command)

   s.close()

Команда не запускается; Я уверен, что он подключается, хотя, если я намеренно сделаю пароль неверным, он зависнет вместо того, чтобы вернуть ошибку. Я гарантировал, что могу вручную подключиться к устройству и выполнить команду «show clock», но фрагмент paramiko не работает. Это ошибка, которую он возвращает:

Starting...
Traceback (most recent call last):
  File "./para2.py", line 21, in <module>
    stdin, stdout, stderr = s.exec_command('show clock')
  File "/usr/lib/python2.6/site-packages/paramiko/client.py", line 350, in exec_command
    chan.exec_command(command)
  File "/usr/lib/python2.6/site-packages/paramiko/channel.py", line 213, in exec_command
    self._wait_for_event()
  File "/usr/lib/python2.6/site-packages/paramiko/channel.py", line 1084, in _wait_for_event
    raise e
EOFError

1 Ответ

1 голос
/ 05 февраля 2020

Сервер может не разрешать exec_command()

Попробуйте использовать интерактивную оболочку

ssh_client = paramiko.SSHClient()
shh_client.connect(#creds)
shell = ssh_client.invoke_shell()

Теперь вы можете использовать shell.send () и shell.recv () для выполнения команд и получить обратно их выходные данные

http://docs.paramiko.org/en/2.7/api/channel.html#paramiko .channel.Channel.send http://docs.paramiko.org/en/2.7/api/channel.html#paramiko .channel.Channel.recv

Пример: https://www.semicolonworld.com/question/56794/implement-an-interactive-shell-over-ssh-in-python-using-paramiko

...