@Chipchilinka337

Как передать строку из скрипта в терминал?

Использую библиотеку Python'а subprocess чтобы из скрипта вызывать системные команды. При вызове команды sudo apt upgrade в линуксе, необходимо нажать кнопку "y" для подтверждения согласия. Как можно напрямую из скрипта передать нажатие кнопки "y"?
def package_upgrade():
    print("[+] Upgrading packages...")
    subprocess.call(["sudo", "apt", "upgrade"])
  • Вопрос задан
  • 180 просмотров
Решения вопроса 1
Lynn
@Lynn
nginx, js, css
Рекомендую читать документацию. В частности у apt upgrade есть флаги которые позволяют не спрашивать подтверждения.

subprocess.call(["sudo", "apt", "upgrade", "--yes"])
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
ky0
@ky0
Миллиардер, филантроп, патологический лгун
Добавлю в коллекцию к другим вполне корректным вариантам ещё один, пригодный не только для apt`а: yes | some_command_with_confirmations.
Ответ написан
@res2001
Developer, ex-admin
Пишете в stdin создаваемого процесса символ 'y' и, если надо, '\n'. Как получить ссылку на stdin процесса смотрите доку subprocess.
Ответ написан
@Fenrir89
Добавить параметр -y или yes или
--noconfirm(ответ по умолчанию чаще всего означает не подменять конфиги)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы