Мне нужно запустить на Ubuntu 18.04 через cron скрипт, myscript.sh
который содержит, среди прочего, инструкцию по установке другого скрипта, pluckeye-linux-0.99.40.installer
и я столкнулся с утомительной ошибкой:
Рассматриваемый скрипт является установщиком для Pluckeye своего рода приложение для родительского контроля. Это нужно запускать как root. Внутри myscript.sh
Я разместил
cd "/path/to/pluckeye/"
./pluckeye-linux-0.99.40.installer
Когда я бегу sudo crontab -e
и поместите туда
* 20 * * * "/path/to/myscript.sh"
тогда установщик Pluckeye возвращает загадочную ошибку (я перенаправляю выходные данные того, что выполняется cron, в файл, чтобы я мог видеть, что пошло не так):
0b8e:24: ca151e1e WARNING 32512
0b8e:33: ca151e1e WARNING 0x30b8e019
0b8e:42: ca151e1e WARNING 0x30b8e019
0b8e:78: ca151e1e WARNING 0x30b8e019
0c2c:14: ca151e1e WARNING 0x30b8e019
0b4c:20: ca151e1e WARNING 0x30b8e019
0c70:48: ca151e1e WARNING 0x30b8e019
FAILED TO INSTALL: 6400
Но когда я обычно запускаю установщик в своей оболочке с sudo
(в противном случае он немедленно вернется и ошибка
I need to be invoked by root
FAILED TO INSTALL: 11520
) работает без проблем.
Я предполагаю, что это происходит из-за того, что cron использует свою собственную минимальную среду. Я пробовал разные вещи, которые нашел в Интернете, например, использовал вместо вышеуказанного
* 20 * * * . $HOME/.profile; "/path/to/myscript.sh"
надеюсь, что установщик заработает сейчас, но это ничего не меняет. Я не хотел бы размещать sudo
внутри сценария, что означает
cd "/path/to/pluckeye/"
sudo ./pluckeye-linux-0.99.40.installer
поскольку я прочитал это, это представляет угрозу безопасности.
Что мне нужно сделать, чтобы Pluckeye установил себя через cron?
возможно, вы бы сделали это:
* 20 * * * sh /path/to/myscript.sh
* 20 * * * root cd /path/to/pluckeye/ && sh ./pluckeye-linux-0.99.40.installer