Как отловить ошибки bash с subroccess в python?

Пишу небольшой скрипт, который должен последовательно выплнить несколько команд в bash

APPS = {
    # name : command
    'ttl=65': 'sysctl -w net.ipv4.ip_default_ttl=65',
    'test': 'echo'
}

.

ERRORS = []
for app in APPS:
    # to be more clear
    name = app
    command = APPS[app]

    try:
        subprocess.check_output(['/bin/bash', '-i', '-c', command])
    except subprocess.CalledProcessError as e:
        newError = {}
        newError['where'] = name
        newError['what'] = e
        ERRORS.append(newError)
        print(f'ERROR << {name}')
    else:
        print(f'ok << {name}')

.

# error log
if len(ERRORS) > 0:
    print(f'{len(ERRORS)} errors occurred!')
    if input('[l] for log') == 'l':
        print('')
        for e in ERRORS:
            print(f'{e.where} << {e.what}\n')

примерно такой выход я получаю: введите сюда описание изображения

Что тут должно быть

  1. ошибка sysctl не должна выводиться (ее можно будет увидеть ток в логах(3 кусок кода))
  2. скрипт не должен останавливаться при встречи input (именно на инпутах он стопится)

как мне это сделать?


Ответы (0 шт):