Ошибка при введении пароля через 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()