Я просто хочу запускать произвольные команды оболочки с пользователем статического сервиса и видеть их выходные данные в оболочке, а также захватывать их для последующего использования, т. е. отправлять по электронной почте и наблюдать перенаправленный вывод в файлах журналов в режиме реального времени.
К сожалению, наивные реализации оболочки Python отображают только весь захваченный вывод сразу.
Подробное описание задачи описание
Для записи в crontab мне нужно создать конкретный shebang в скрипте Python /home/svc_user/prj/wrapper.py. Должно быть достигнуто следующее:
- Нацельтесь на конкретный исполняемый файл интерпретатора Python, который находится в виртуальной среде, т. е. /home/svc_user/prj/.venv/bin/python3
- Я хочу перенаправить вывод скрипта (как stdout, так и stderr) в файл /home/svc_user/prj/logs/timestamped_log.txt и просматривайте изменения в режиме реального времени (сценарий использования: записывайте в файл длительное выполнение задания cron и иногда просматривайте выходные данные в реальном времени, чтобы проверить их)
Это подразумевает запуск python3 -u
- Идемпотент (т.е. без специального эффекта), если сценарий вызывается из кронтабу пользователя службы.
- Но настоящий пользователь alice, имеющий права sudo, теперь должен автоматически запускать этот сценарий как svc_user при выполнении ./wrapper.py из своего/ее оболочки.
- Это подразумевает добавление sudo -u svc_user
Как я могу связать это вместе, чтобы вызов из cron, который не предоставляет среду оболочки для сценария и чувствителен к синтаксису shebang, работает?
Я работаю с Debian/Ubuntu Linux.
Подробнее здесь: https://stackoverflow.com/questions/798 ... edirection
Мобильная версия