V-antena and Tanimoto's page

谷本の備忘録・雑記帳・work

>

raspberry piでサーバー運用しているので稼働状況をメールで自動的にメールで送らせるようにする。

前提条件

OS : raspberry pi OS (buster)
mail server: postfix+dovecot (これでないといけないというわけではない)
範囲 : LAN内でのみ使用 (securityは考えない)

方針

  • LAN内でのみ使用
  • postfixでサポートのsendmailインターフェースを使う
    (mutt でトライしたがうまく動かせず断念)
  • 簡単のためシェルを使う
  • メールのsubjectにはアルファベットを使う。
  • 計測するデータは、cpuの温度、メモリー使用状況、SSD使用容量、smart状況

メール送信用コマンド

mytools/health.sh | sendmail -i -t

mytools/health.shが計測用シェル兼sendmailへのインターフェース部

シェルの中身

#!/bin/bash

echo from: sender_name@domain_name
echo to: receiver_name@domain_name
echo subject: raspi server status report
echo Content-Type: text/plain;charset="UTF-8"
echo

echo ------  date and time ----------
date
echo

echo ----- cpu temparature -----------
vcgencmd measure_temp
echo
echo  ------- memory usage -----------
free -h
echo

echo -------- device usage  ---------
df -h
echo

echo ------- SSD smart data ----------
smartctl -d sat -A /dev/sda

sender_name, receiver_name, domain_name, /dev/sdaは実際の値に調整する。

ユーザー追加

sudo useradd sender_name -s /sbin/nologin
sudo passwd sender_name
sudo mkdir /home/sender_name
sudo chown sender_name:sender_name /home/sender_name

下2行の必要性がよくわからないが、/var/log/mail.errに出てくるエラーを消すためにいろいろしていて、その結果上記の様にしたところメール送信ができたため。

cronの設定

次の様な内容のファイル(例えばhealthcheck)を作成し、/etc/cron.dに配置する。
なお、オーナーをrootにしておかないとcronがエラーになったのでrootにする。
超参考となったサイト:https://www.server-memo.net/tips/etc-crontab.html

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""
HOME=/home/pi

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,$
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed

 7 10 * * * root  /home/pi/mytools/health.sh | sendmail -i -t
 7 22 * * * root  /home/pi/mytools/health.sh | sendmail -i -t

sudoがcronの中で使おうとすると、"TTY onknown"となったのでsudoを使わないようにするsmartctlをcronの中で使えるようにする。従ってユーザーもrootとする。

最後は、メーラ側の設定を行いおしまい

Leave a Comment

入力エリアすべてが必須項目です。メールアドレスが公開されることはありません。

内容をご確認の上、送信してください。

CAPTCHA



あなたはIPv4でアクセスしています