Возникла необходимость автоматизировать процесс создания резервных копий важных данных с последующим выключением компьютера.
Создание резервных копий производится через сценарий sh с использованием ПО rclone, запуск которого задаётся через пользовательское задание cron.
Но простым включением в сценарий команды shutdown или shutdown -h now желаемый результат не достигается (подробности здесь). Команда выключения /sbin/poweoff должна быть выполнена под правами суперпользователя, что влечёт за собой команду sudo и сопутствующий ей ввод пароля для повышения полномочий пользователя в системе.
Поэтому для реализации этой задумки необходимо сделать следующее:
1) Разрешить пользователю системы, от имени которого будет запущено задание cron, выполнять команду sudo /sbin/poweroff без ввода пароля;
2) добавить в конец сценария на bash команду sudo /sbin/poweroff
Чтобы выполнить команду sudo /sbin/poweroff без ввода пароля необходимо внести изменения в файл /etc/sudoers
sudo xed /etc/sudoers (или sudo gedit /etc/sudoers)
Вписать строку имя_пользователя ALL=NOPASSWD: /sbin/poweroff Чтобы изменения вступили в силу перезагрузите систему.
Имя_пользователя, под которым Вы работаете в системе (если до сих пор его не знаете) можно посмотреть, запустив терминал. Например, в моём случае имя пользователя minter, поэтому строка принимает значение:
minter ALL=NOPASSWD: /sbin/poweroff
Если обнаружите, что после внесённых изменений файл sudoers оказался "испорчен", то выполните действия, описанные в этой публикации.
Ниже приводится пример сценария (скрипта на bash), запускаемого через cron, в ходе которого после 5 последовательно выполняемых заданий по резервированию данных через rclone через 5 секунд следует выключение компьютера.
#!/bin/bash
do=/home/minter/Tools/scripts/rclone
$do/books.sh
$do/sa.sh
$do/ca.sh
$do/cur.sh
$do/sys.sh
sleep 5
sudo /sbin/poweroff
Комментариев нет:
Отправить комментарий