Сценарий Python paramiko, проблемы с чтением вывода во время exec_command ()

Справочная информация : Я использую python и paramiko для автоматизации процесса, через который я прохожу каждый раз, когда мне приходится сдавать программа для занятия. Мы используем команду под названием «handin» для отправки исходного кода, но это должно быть сделано со школьного компьютера. Поэтому, когда я отправляю код из дома, я должен: sftp на школьные серверы, поместить файлы в каталог, ssh на школьный компьютер, использовать команду 'handin'

. Я могу успешно помещать файлы на школьные машины. Проблема возникает, когда я пытаюсь использовать exec_command («передать мои файлы»), а затем читаю вывод, чтобы определить следующее действие.

так что у меня есть

try:
   (stdin, stdout, stderr) = client.exec_command(s)
except:
   print 'whoops'
   sys.exit()
print stdout.readlines()

Но это по какой-то причине приводит к тупиковой ситуации, скрипт, кажется, ничего не делает, и мне приходится в конечном итоге убить весь процесс (ctrl + c не работает). Я не уверен, что exec_command не завершается правильно (даже если он выходит из блока try / catch) или у меня проблемы с сетью или что-то в этом роде.

Есть идеи?

обновление:

Проблема заключается во взаимодействии с командой handin во время выполнения. После выполнения команды handin может все еще работать, а может и не работать. Если это первая отправка, он говорит об успехе, бла-бла и завершает выполнение. Все хорошо. Но если я отправляю повторно, я должен разрешить перезапись (stdin.write ('y')) для каждого файла.

TL / DR:

Как мне проверить, что exec_command () все еще выполняется, ожидает ввода и, соответственно, readline () из stdout?

11
задан macgregor 6 October 2011 в 23:17
поделиться