Я использую python 2.7, поэтому я не могу использовать то, что, по моему мнению, будет работать (subprocess.check_ouput () с входным аргументом), и я пытаюсь передать строку 'yes' объекту Popen. Вот мой код
def clone(ssh_url):
sub_list = ['git', 'clone', ssh_url]
cmd = subprocess.Popen(sub_list, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
universal_newlines=True)
output, err = cmd.communicate(input='yes')
print output
if err is not None:
print err
ssh_url = 'git@gitlab.com:User1/test-work.git'
clone(ssh_url)
Итак, я пытаюсь клонировать проект gitlab. Я не использовал ключ ssh на этом компьютере ранее, поэтому я получаю сообщение о том, каково значение отпечатка ключа ECDSA и хочу ли я продолжать подключение (да / нет).
Я хочу передать «да» этому выбору, когда он представлен, однако введенный мною ввод communicate()
не получен, и я получаю ошибку Host Key verification failed. fatal: Could not read from remote repository
от git.
Кто-нибудь знает, как сделать эту работу? Связь () блокируется? Я попытался использовать пример с потоками здесь: Используйте subprocess.communicate () для передачи stdin без ожидания процесса в принятом ответе, но это тоже не сработало.