Ошибка при введении пароля через subprocess

Есть скрипт в cron, при его выполнении возникает следующая ошибка:

2021-12-27 09:10:08,688 - ERROR - modules.bl_parser.check_dns 
- b'[sudo] \xd0\xbf\xd0\xb0\xd1\x80\xd0\xbe\xd0\xbb\xd1\x8c \xd0\xb4\xd0\xbb\xd1\x8f bg: '

Вот кусок кода, который отвечает за эту ошибку:

try:
    password = self.password+'\n'
    password = password.encode()
    stdout, stderr= subprocess.Popen(['sudo', '-S', 'cp',\
                                      '/home/bg/new_parser_bg/zones.bl', '/etc/bind/zones/'],\
                                      stdin=subprocess.PIPE, stdout=subprocess.PIPE,\
                                      stderr=subprocess.PIPE).communicate(input=bytes(password))
    if stderr:
        log.error(stderr)
        sys.exit(1)

Такая ошибка возникает обычно при выполнении через крон, в чем причина?


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

Автор решения: EGR

В общем, я добавил:

time.sleep(1)
password = self.password+'\n'
password = password.encode()
time.sleep(1)
stdout, stderr= subprocess.Popen(['sudo', '-S', 'cp',\
                                  '/home/bg/new_parser_bg/zones.bl', '/etc/bind/zones/'],\
                                  stdin=subprocess.PIPE, stdout=subprocess.PIPE,\
                                  stderr=subprocess.PIPE).communicate(input=bytes(password))

Как я понял, скрипт выполнял следующую строку не дожидаясь password.encode()

→ Ссылка