2012-03-19 5 views
0

Я использую Python подпроцесс для выполнения команды на удаленном сервере:Subprocess вход показывает пароль

p=subprocess.Popen('ssh [email protected] "sudo do_something"', shell=True) 

Когда я ввожу пароль, он появляется на экране - в отличие от запуска этого из командной строки, где пароль скрыт.

Есть ли способ отключить это входное эхо?

+0

Удалить 'shell = True' –

+1

, вы можете обратиться к этой теме http://stackoverflow.com/questions/1787288/how-to-call-ssh-by-subprocess-module-so-that-it- use-ssh-askpass-variable – bpgergo

+0

['fabric'] (http://fabfile.org) может быть полезна для запуска команды на удаленном сервере. – jfs

ответ

1

Возможно, вы захотите рассмотреть возможность использования pexpect, если вам нужно набрать что-то автоматическое: http://www.noah.org/wiki/Pexpect Таким образом, вы можете заранее спросить своего пользователя для пароля (используя модуль getpass), а затем позволить вашему сценарию типа «пароль практически.

На веб-сайте, упомянутом выше, есть несколько хорошо написанных примеров, описывающих, как делать то, что вам нужно.