cron :отправлять сообщения об ошибках в файл, если MTA не установлен

Один из способов заключается в использовании acctбухгалтерских утилит.

Из описания пакета Debian:

$ apt-cache show acct
Package: acct
Version: 6.6.4-2
Installed-Size: 341
Maintainer: Debian Security Tools 
Architecture: amd64
Depends: libc6 (>= 2.14), lsb-base
Description-en: GNU Accounting utilities for process and login accounting
 GNU Accounting Utilities is a set of utilities which reports and summarizes
 data about user connect times and process execution statistics.
.
 "Login accounting" provides summaries of system resource usage based on connect
 time, and "process accounting" provides summaries based on the commands
 executed on the system.
.
 The 'last' command is provided by the sysvinit package and not included here.

Домашняя страница:http://www.gnu.org/software/acct/

Этот пакет включает в себя средство создания отчетов под названием sa. Возможно, вам придется написать сценарии в awkили perlили что-то еще, чтобы опубликовать вывод -процесса saв нужной вам форме.

4
10.10.2021, 03:13
1 ответ

Если ваша ОС по умолчанию использует почтовую систему, аналогичную sendmail-, вы можете использовать пользовательский файл mailer.conf, который, в свою очередь, вызывает пользовательский сценарий оболочки, который обрабатывает выходные данные задания cronтак, как вы хотите.

Для этой настройки требуетсяsendmail-подобная среда, но сам демон sendmailдолжен быть отключен, т. е. не запущен.

Начните с создания простого mailer.confфайла, в котором будет определен замещающий сценарий оболочки, функционирующий как компонент sendmailдля «отправки» почты, а также создайте сам сценарий оболочки:

printf 'sendmail\t/etc/mail/mail-script.sh\n' > /etc/mail/mailer.conf

cat << 'EOF' > /etc/mail/mail-script.sh
#!/usr/bin/env bash

{
  date
  printf -- '--- BEGIN\n'
  cat
  printf -- '--- END\n'
} >> /var/log/cron-jobs.log
EOF

chmod 755 /etc/mail/mail-script.sh

Это завершает «электронную» часть набора -. Теперь давайте создадим пример задания cron, которое мы можем протестировать с помощью :

.
cat << 'EOF' > /root/testjob.sh 
#!/usr/bin/env bash

printf 'This is a test cron job run at %s\n' "$(date)"
EOF

chmod 755 /root/testjob.sh

Наконец, мы создадим запись в /etc/crontab, которая будет запускаться /root/testjob.shраз в минуту:

cat << EOF >> /etc/crontab
MAILTO="foobar"
*   *   *   *   *   root    /root/testjob.sh
EOF

Должна присутствовать запись MAILTO, (, иначе письмо не будет создано ),но произвольно. Если бы вы хотели, вы могли бы определить определенные имена MAILTOдля разных целей и обрабатывать выходные данные задания cronпо-разному, в зависимости от того, какая MAILTOмаркирует ссылки задания cron.

Со всем этим мы находим следующий вывод, накапливающийся в/var/log/cron-jobs.log:

# tail -f /var/log/cron-jobs.log
Tue Oct 12 14:11:00 PDT 2021
--- BEGIN
From: Cron Daemon <root@test.example.com>
To: foobar
Subject: Cron <root@test> /root/testjob.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin>
X-Cron-Env: <MAILTO=foobar>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>

This is a test cron job run at Tue Oct 12 14:11:00 PDT 2021
--- END
Tue Oct 12 14:12:00 PDT 2021
--- BEGIN
From: Cron Daemon <root@test.example.com>
To: foobar
Subject: Cron <root@test> /root/testjob.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin>
X-Cron-Env: <MAILTO=foobar>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>

This is a test cron job run at Tue Oct 12 14:12:00 PDT 2021
--- END
Tue Oct 12 14:13:00 PDT 2021
--- BEGIN
From: Cron Daemon <root@test.example.com>
To: foobar
Subject: Cron <root@test> /root/testjob.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin>
X-Cron-Env: <MAILTO=foobar>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>

This is a test cron job run at Tue Oct 12 14:13:00 PDT 2021
--- END
Tue Oct 12 14:14:00 PDT 2021
--- BEGIN
From: Cron Daemon <root@test.example.com>
To: foobar
Subject: Cron <root@test> /root/testjob.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin>
X-Cron-Env: <MAILTO=foobar>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>

This is a test cron job run at Tue Oct 12 14:14:00 PDT 2021
--- END
Tue Oct 12 14:15:00 PDT 2021
--- BEGIN
From: Cron Daemon <root@test.example.com>
To: foobar
Subject: Cron <root@test> /root/testjob.sh
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin>
X-Cron-Env: <MAILTO=foobar>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>

This is a test cron job run at Tue Oct 12 14:15:00 PDT 2021
--- END
1
12.10.2021, 21:22

Теги

Похожие вопросы