Paramiko запускает процесс SSH и он умирает .. почему? - PullRequest
2 голосов
/ 28 сентября 2011

Ниже мой код. При входе на сервер я запускаю ps aux | grep python Я вижу, как все процессы запускаются, а затем умирают через секунду или две. Если я запускаю команду на сервере .. она работает. Я пробовал с nohup. Без nohup и т. Д. У меня нет объяснений. Это долгий процесс, который должен занять несколько часов.

key = paramiko.RSAKey.from_private_key_file(rsa_private_key)
ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
ssh.connect(hostname,port,username=username,pkey=key)
#stdin, stdout, stderr = ssh.exec_command('tar -xf /home/ubuntu/opt.tar.gz')
stdin, stdout, stderr = ssh.exec_command('ls')
#stdin, stdout, stderr = ssh.exec_command(bash)
stdin, stdout, stderr = ssh.exec_command('ls')
stdin, stdout, stderr = ssh.exec_command('export DISPLAY=localhost:0')
stdin, stdout, stderr = ssh.exec_command('nohup python /home/ubuntu/Optimization/pvServer2.py &')
stdin, stdout, stderr = ssh.exec_command('nohup python /home/ubuntu/Optimization/pvServer2.py &')
stdin, stdout, stderr = ssh.exec_command('nohup python /home/ubuntu/Optimization/pvServer2.py &')
stdin, stdout, stderr = ssh.exec_command('python /home/ubuntu/Optimization/pvServer2.py &')
stdin, stdout, stderr = ssh.exec_command('python /home/ubuntu/Optimization/pvServer2.py &')
stdin, stdout, stderr = ssh.exec_command('python /home/ubuntu/Optimization/pvServer2.py &')
stdin, stdout, stderr = ssh.exec_command('python /home/ubuntu/Optimization/pvServer2.py &')
ssh.close()

1 Ответ

1 голос
/ 28 сентября 2011

Попробуйте проверить вывод команды.Возможно, была написана ошибка, и вы не увидите ее в своем текущем коде.Попробуйте сделать:

stdin, stdout, stderr = ssh.exec_command('python /home/ubuntu/Optimization/pvServer2.py')
print 'exit_code: %d' % stdout.channel.recv_exit_status()
print stdout.read()
print stderr.read()

После того, как вы выяснили, что не так, и исправили это, вы можете вернуться к использованию nohup.

Я думаю, что неправильно вы звонитекоманда DISPLAY экспорта.Это не повлияет на env других команд, которые вы выполняете.Вам нужно сделать что-то вроде этого:

stdin, stdout, stderr = ssh.exec_command('sh -c "export DISPLAY=localhost:0; python /home/ubuntu/Optimization/pvServer2.py"')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...