не удается запустить скрипт на ubuntu с веб сайта при помощи subprocess.call
Окружение: ubuntu16, python 3.8, venv, nginx, flask, gunicorn.Запуск от www-data В коде на сайте
res = subprocess.call('sudo /var/www/site/script.sh',shell=True, executable='/bin/bash')
ошибка syslog : 16:23:46 proxy gunicorn[25450]: /bin/bash: sudo: command not found
Проверял следующим образом. на хосте Ubuntu активировал виртуальную среду,переключался на пользователя www-data, стартовал питон, import subprocess,в консоли питона ввожу:
subprocess.call('sudo /var/www/site/script.sh',shell=True, executable='/bin/bash')
и все великолепно отрабатывает. Возможно лишняя информация, но в sudoers прописано:
www-data ALL=(root) NOPASSWD: /var/www/site/script.sh
Т.е. мне нужно передать sudo и скрипт отработает без просьбы ввести пароль от пользователя www-data
Пробовал передавать аргументы так:
['sudo','/var/www/site/script.sh'] (как показано в документации), а так же /bin/bash передать в аргументы, но не работает.
Добился когда скрипт работает с сайта только в случае когда даем права скрипту rwxrwxrwx. хозяин www-data:www-data, тогда все работает, но мне требуется в скрипте переназначать владельцев файлов, а это требует повышения привилегий, т.е. та же команда sudo Передавать пароль скрипту тоже не хотелось бы.