вторник, 14 января 2020 г.

Выключить компьютер после выполнения задания через cron


Возникла необходимость автоматизировать процесс создания резервных копий важных данных с последующим выключением компьютера.

Создание резервных копий производится через сценарий 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


Комментариев нет:

Отправить комментарий