Как решить - подключение к 192.168.XX закрыто? - PullRequest
3 голосов
/ 09 июля 2019

Мой код выглядит так:

def op():
    cmd = "ssh -t user@ip top -bn 1 >data.txt"
    os.system(cmd)
    #does some other operations and then returns some variables, say a,b,c
    return (a,b,c)


k=1
while k<5:
    print(op())
    k+=1

При первом запуске цикла while (при k = 1) я получаю значения переменных, как и ожидалось. Однако на каждой последующей итерации я получаю следующее сообщение об ошибке:

Connection to 192.168.xxx.xxx closed.

Все мои переменные также пусты. Как это можно исправить?

Я предполагаю, что это как-то связано с «закрытием» SSH-соединения, а затем его повторным запуском в начале каждой итерации, но я не могу понять, как это сделать.

1 Ответ

1 голос
/ 09 июля 2019

Этот ответ не может быть прямым решением вашей проблемы. Тем не менее, всегда рекомендуется использовать Python-интерфейсы SSH вместо прямого выполнения команд оболочки.

Paramiko является одной из таких реализаций Python sshv2.

Текущая документация: http://docs.paramiko.org/en/2.6/

Пример кода: Примеры SSH


    import paramiko 
    ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    try:
        ssh.connect('localhost', username=username, password=password)
    except paramiko.SSHException:
        print "Connection Failed"
        quit()</p>

<pre><code>stdin,stdout,stderr = ssh.exec_command("top -bn")

for line in stdout.readlines():
        print line.strip()
ssh.close()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...