Назад | Перейти на главную страницу

Автоматическое отключение домашнего сервера GNU / Linux после 30 минут бездействия

Я бы хотел, чтобы мой домашний сервер GNU / Linux отключился после 30 минут бездействия. Для «активности» я думаю

  1. любые новые задания на печать [CUPS]
  2. любые запросы к локально запущенному серверу Apache
  3. любая активность через SSH, кроме неудачных попыток входа

Если произойдет что-либо из этого, я бы хотел сбросить 30-минутный обратный отсчет.

Первые два кажутся вполне выполнимыми. Я мог бы просто написать небольшую долгоиграющую программу на Python или Bash, которая

  1. терпеливо ждет 30 минут, чтобы выпустить shutdown -h now
  2. контролирует размер файлов журналов доступа CUPS и Apache, сбрасывая таймер при обнаружении любого роста файла

Но я не совсем уверен в отслеживании активности SSH. Есть какой-нибудь простой способ сделать это? Мне не очень интересно иметь дело с libpcap или чем-то еще, если только это не очень просто.

Еще одна мысль, которая меня поражает, заключается в том, что это может быть полезно в целом, поэтому, возможно, я сделаю что-нибудь расширяемое и выпущу его как бесплатное программное обеспечение.

Я не уверен, актуально ли это, но на данном сервере работает Ubuntu 10.04.4 LTS.

Мой вопрос похож на вот этот, кроме обнаружения активности.

Не пишите долгоиграющую программу. Используйте cron для запуска сценария каждые пять минут или около того, чтобы создать файл, возраст которого составляет полчаса (используйте команду touch), а затем проверяет, являются ли различные файлы журнала новее, чем этот справочный файл (с помощью команды test).

Возможно, в вашей системе журналы sshd (через syslog) в /var/log/messages файл. Это не сработает для вашей цели, так как там же регистрируется много других вещей, поэтому вам может потребоваться отредактировать /etc/syslog.conf так что sshd также ведет журнал в специальные файлы журнала, которые вы можете отслеживать.

Вам, вероятно, также следует проверить, вошел ли кто-нибудь в систему, прежде чем вы выключите питание. (И в зависимости от того, для чего вы используете ssh, этого может быть достаточно и для ssh, и в этом случае вам не нужно беспокоиться о журналах sshd.)

Я был бы удивлен, если бы кто-нибудь еще нашел это полезным.

PowerNap - это проект, который предоставляет такую ​​функциональность. К сожалению, эти условия нелегко расширить, и поэтому, если условия, которые они предоставляют, не соответствуют вашим требованиям, вам нужно либо взломать код, либо найти что-то еще.

Ты можешь использовать netstat -p для поиска соединений, связанных с sshd (если он запущен с достаточным уровнем привилегий, например, root), и есть страница диагностики для Apache (включаемая mod_status), которая может сказать вам, делает ли сервер что-то (вы можете отключить ведение журнала из доступа к страницу и заблокируйте ее только для запросов от localhost). Я считаю, что CUPS также имеет доступную по протоколу HTTP диагностику, например, список активных заданий (или просто используйте lpq -a).