subprocess
использует /bin/sh
в качестве оболочки, и, вероятно, ваша система не поддерживает здесь-строку (<<<
), следовательно, ошибка.
От subprocess
источник:
if shell:
# On Android the default shell is at '/system/bin/sh'.
unix_shell = ('/system/bin/sh' if
hasattr(sys, 'getandroidapilevel') else '/bin/sh')
Вы можете запустить команду в качестве аргумента для любой оболочки, которая поддерживает здесь строку, например bash
:
run('bash -c "debconf-set-selections <<< \"postfix postfix/mailname string server.exmaple.com\""', shell=True)
Будьте осторожны с цитированием.
Или лучше вы можетеостанься POSIX и используй echo
и трубу для прохода через STDIN:
run("echo 'postfix postfix/mailname string server.exmaple.com' | debconf-set-selections", shell=True)