среда, 19 февраля 2014 г.

Автоматическое выключение linux - машины в определённый день месяца

Встала необходимость сделать так, чтобы в последнюю среду месяца (санитарный день) компьютер выключался самостоятельно несколько раньше, чем обычно. Пошарив немного по руководству cron понял, что вот прямо так сделать никак нельзя. Можно лишь указать промежуток времени особым способом, то есть, можно сказать, что я хочу, чтобы в конце месяца (задаётся числовым промежутком) и если день равен, скажем, среде, выключать в не в 18:00, а в 16:00. Но в этом случае, оно не будет проверять, что оба условия выполняются, а будет делать это если хотя бы одно выполнено.
Поэтому надо было сделать что-то чуть более сложное. В результате, я написал код на питоне. Совсем короткий и простой, но всё же:

import os
import time
from datetime import date
if (31 - date.today().day < 8 and date.today().weekday() == 2):
    os.system('/sbin/poweroff')
quit()
Работает вроде нормально. Добавил задание в cron.