RaspberryPiのログをGmailにして送る
Back
Alt+HOME
図はD-STAR Gatewayのログファイルから最新の一部を取り出してメールにしたものです。今回は簡単な平テキストの物に限って、取り敢えずメールにしてみたいと思います。これが出来たら第二段階で圧縮ファイルにしたり、暗号化した添付ファイルを送るメールについて考えたいと思っています。
取り敢えず、
(圧縮)ファイルを添付したメールを送る (Postfixを使わない方法)について追記しました。
Bookworm(Pi OS 12)で、SendEmailによる送信が出来ないケースが有りましたので、
別途
RasPiのログをGmailにして送る(Bookworm)を掲載しました。
獨協医科大学D-STARリピータ管理者髙田様より
ご提供戴いたスクリプトを使用させて戴きました
複数のログファイルから必要な行数を取り出し一つのファイルを作成
- メールとして送信する内容のファイルを作成するスクリプト
GNU nano 5.4 gatewaylog
#!/bin/bash
## 各ログファイル最新の20行を読み取ってhomeディレクトリにファイルを作成
cd /var/log
echo [rpi-dsgwd.log] >> /home/user/DSTARLOG
tail -n20 /var/log/rpi-dsgwd.log >> /home/user/DSTARLOG
echo [rpi-xchange.log] >> /home/user/DSTARLOG
tail -n20 /var/log/rpi-xchange.log >> /home/user/DSTARLOG
echo [rpi-dprs.log] >> /home/user/DSTARLOG
tail -n20 /var/log/rpi-dprs.log >> /home/user/DSTARLOG
echo [rpi-dstatus.log] >> /home/user/DSTARLOG
tail -n20 /var/log/rpi-dstatus.log >> /home/user/DSTARLOG
echo [rpi-multi_forward.log] >> /home/user/DSTARLOG
tail -n20 /var/log/rpi-multi_forward.log >> /home/user/DSTARLOG
echo [rpi-decho.log] >> /home/user/DSTARLOG
tail -n20 /var/log/rpi-decho.log >> /home/user/DSTARLOG
cd /home/user
- /var/log フォルダに入って tail コマンドで -n20 つまり20行ずつ各ファイルから取得し、次々に /home/user
のファイル DSTARLOG に書き加えていきます。最後にホームディレクトリに戻ります。
ここまでスクリプトが書けたら一度保存します。
- ファイルの属性を変更して起動できるようにします。
$ sudo chmod +x gatewaylog
- コマンドとしてパスの通っている /usr/local/bin へ移動します。
$ sudo mv gatewaylog /usr/local/bin
- コマンドを実行してみます。
$ gatewaylog
$ ls
DSTARLOG
ホームディレクトリを一覧してみると、ログを集めたファイルが出来ているのが確認できると思います。
メールソフト導入の前にGoogleのアプリパスワードを入手する
- Google アカウントへ移行します。
- 左ペインメニューに有る「セキュリティ」をクリックします。
- 図のように、2段階認証プロセスが オン になっていれば、その中に入ると最下部に[アプリ パスワード]が表示されます。
> をクリックします。
- [アプリを選択、[デバイスを選択]から適当なアプリの名前を付けたら[生成]をクリックします。
図のような16桁のパスワードが発行されます。
このパスワードは、いつでも削除したり、生成したり出来ます。
注意点は使用中のパスワードを削除すると、そのパスワードを設定したアプリが使えなくなるなります。
パスワードの流出には十分な注意を払ってください
因みに、このパスワードは既に破棄しました^^;
ファイルを添付する方法は
(圧縮)ファイルを添付したメールを送る (Postfixを使わない方法)へジャンプしてください。
メールソフトPostfixの導入と設定
- メールサーバとして働く一般的なPostfixをインストールします。
$ sudo apt install libsasl2-modules
- Postfixの設定ファイルを編集します。(元ファイルのコピーを残してください)
$ sudo nano /etc/postfix/main.cf
GNU nano 5.4 /etc/postfix/main.cf
# See /usr/share/postfix/main.cf.dist for a commented, more complete version
# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner=$myhostname ESMTP $mail_name (Debian/GNU)
biff=no
# appending .domain is the MUA's job.
append_dot_mydomain=no
# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory=no
# See http://www.postfix.org/COMPATIBILITY_README.html -- default to 2 on
# fresh installs.
compatibility_level=2
# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_security_level=may
smtp_tls_CApath=/etc/ssl/certs
smtp_tls_security_level=encrypt #---> mayからencryptに変更
smtp_tls_session_cache_database=btree:${data_directory}/smtp_scache
smtpd_relay_restrictions=permit_mynetworks permit_sasl_authenticated defer_unauth_destination
myhostname=dstargw #---> 標準的インストールをすると自動的に設定される
alias_maps=hash:/etc/aliases
alias_database=hash:/etc/aliases
mydestination=$myhostname, dstargw, localhost.localdomain, , localhost
relayhost=[smtp.gmail.com]:587 #---> Googleのセキュリティポートを設定
mynetworks=127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit=0
recipient_delimiter=+
inet_interfaces=loopback-only #---> 送信のみに限定する場合(default: all)
inet_protocols=ipv4 #---> ネットワークで以上が出る場合(default: all)
# Added settings #---> 以下を追加する
smtp_sasl_auth_enable=yes
smtp_sasl_security_options=noanonymous
smtp_sasl_password_maps=hash:/etc/postfix/sasl/sasl_passwd
smtp_tls_CAfile=/etc/ssl/certs/ca-certificates.crt
- Googleセキュリティポート認証用ファイルの作成
$ sudo nano /etc/postfix/sasl/sasl_passwd
GNU nano 5.4 /etc/postfix/sasl/sasl_passwd
[smtp.gmail.com]:587 abcde@gmail.com:lfbnuczamptbuanz
前項で取得したGoogleのアプリパスワードをメールアドレスに続いて書き込み、保存します。
- 次に上記認証用ファイルからPostfixが実際アクセスする時に使用するアカウントファイルをマッピングします。
$ sudo postmap /etc/postfix/sasl/sasl_passwd
- パスワードに関する2ファイルの属性を変更します。(又はsasl_passwdは削除します。)
$ sudo chmod 600 /etc/postfix/sasl/sasl_passwd
$ sudo chmod 600 /etc/postfix/sasl/sasl_passwd.db
- 最後に設定した環境を認識させるためにサービスを再起動します。
$ sudo systemctl retart postfix
最初に作成したスクリプトの完成と送信テスト
- スクリプトにメール送信に関する部分を追加します。(掲載スクリプトは全部)
$ sudo nano /usr/local/bin/gatewaylog
GNU nano 5.4 /usr/local/bin/gatewaylog
#!/bin/bash
#////////////////////////////////////////////////////////////////
# 最新ログをまとめGmailサーバを中継してメールする
#////////////////////////////////////////////////////////////////
## 各ログファイル最新行を読み取ってhomeディレクトリにファイルを作成
cd /var/log
echo [rpi-dsgwd.log] >> /home/opendv/DSTARLOG
tail -n20 /var/log/rpi-dsgwd.log >> /home/opendv/DSTARLOG
echo [rpi-xchange.log] >> /home/opendv/DSTARLOG
tail -n20 /var/log/rpi-xchange.log >> /home/opendv/DSTARLOG
echo [rpi-dprs.log] >> /home/opendv/DSTARLOG
tail -n20 /var/log/rpi-dprs.log >> /home/opendv/DSTARLOG
echo [rpi-dstatus.log] >> /home/opendv/DSTARLOG
tail -n20 /var/log/rpi-dstatus.log >> /home/opendv/DSTARLOG
echo [rpi-multi_forward.log] >> /home/opendv/DSTARLOG
tail -n20 /var/log/rpi-multi_forward.log >> /home/opendv/DSTARLOG
echo [rpi-decho.log] >> /home/opendv/DSTARLOG
tail -n20 /var/log/rpi-decho.log >> /home/opendv/DSTARLOG
cd /home/opendv
## メールヘッダーの作成
MAILTO="abcde@gmail.com"
MAILFROM="dstargw@localhost"
MAILSUB="Gateway Log"
MAILFILE=/home/user/mail.txt
FILENAME=/home/user/DSTARLOG # 内容を流し込むファイル
echo "To:"${MAILTO} > $MAILFILE
echo "FROM:"${MAILFROM} >> $MAILFILE
echo "Subject:"${MAILSUB} >> $MAILFILE
echo "" >> $MAILFILE
## ヘッダーの下にログ本文を流し込む
cat $FILENAME >> $MAILFILE
##
sendmail -i -t < $MAILFILE
rm $MAILFILE
rm $FILENAME
- これで送信が出来るようになりました。
$ gatewaylog
グーグルメールの受信ボックスに「Gateway Log」と言うメールが届いて居れば成功です。
毎日定時に報告メールが届くようにします。
- crondによって定時にコマンドが実行されるようにします。
$ sudo nano /etc/crontab
GNU nano 5.4 /etc/crontab
#
00 6 * * * user gatewaylog
午前6時にユーザ名 user の権限にてコマンドgatewaylogが実行され、テストどおりに送信されるはずです。
- crontabを保存したら、cronに設定を認識させます。
$ sudo systemctl restart cron
以上で明日の朝からゲートウェイPCのアプリケーション状況が通達されるように成ります。
次の段階として、圧縮したログレポートファイルを添付する方法を勉強してみたいと思います。
(圧縮)ファイルを添付したメールを送る (Postfixを使わない方法)
- アプリパスワードの取得は終わっているものとします。
まだの場合は最初のメールソフト導入の前にGoogleのアプリパスワードを入手するをご覧ください。
- 次のアプリケーションをインストールします。既にPostfixが稼働している場合はsendemailのみでOK
$ sudo apt install sendemail libnet-ssleay-perl libio-socket-ssl-perl
- スクリプトは次のように成ります。Postfixとの違いはスクリプトの中でgmailサーバのアカウント指定を行うことです。
$ sudo nano /usr/local/bin/gatewaylog
GNU nano 5.4 /usr/local/bin/gatewaylog
#!/bin/bash
#////////////////////////////////////////////////////////////////
# 最新ログをまとめGmailサーバを中継してメールする
#////////////////////////////////////////////////////////////////
## 各ログファイル最新行を読み取ってhomeディレクトリにファイルを作成
FILENAME=/home/opendv/DSTARLOG
cd /var/log
echo [rpi-dsgwd.log] >> $FILENAME
tail -n20 /var/log/rpi-dsgwd.log >> $FILENAME
echo '' >> $FILENAME
echo [rpi-xchange.log] >> $FILENAME
tail -n20 /var/log/rpi-xchange.log >> $FILENAME
echo '' >> $FILENAME
echo [rpi-dprs.log] >> $FILENAME
tail -n20 /var/log/rpi-dprs.log >> $FILENAME
echo '' >> $FILENAME
echo [rpi-dstatus.log] >> $FILENAME
tail -n20 /var/log/rpi-dstatus.log >> $FILENAME
echo '' >> $FILENAME
echo [rpi-multi_forward.log] >> $FILENAME
tail -n20 /var/log/rpi-multi_forward.log >> $FILENAME
echo '' >> $FILENAME
echo [rpi-decho.log] >> $FILENAME
tail -n20 /var/log/rpi-decho.log >> $FILENAME
cd /home/opendv
## ファイルを圧縮
ZIPFILE="dstarlog.zip"
zip ${ZIPFILE} ${FILENAME}
## メールヘッダーの作成
MAILTO="abcde@gmail.com"
MAILFROM="dstargw@localhost"
MAILSUB="Gateway Log"
# 圧縮ファイルを添付するとき
MESSAGE="添付ファイル: dstarlog.zip"
ATTACHED=/home/opendv/dstarlog.zip
# テキストファイルのまま添付するとき
#MESSAGE="添付ファイル: DSTARLOG"
#ATTACHED=/home/opendv/DSTARLOG
## アカウント情報
ACCOUNT="abcde" # メールアドレスの@以降を省いたもの
PASSWD="lfbnuczamptbuanz" # 先に取得したアプリパスワード
## メール送信
sendemail -f ${MAILFROM} -t ${MAILTO} -m ${MESSAGE} -u ${MAILSUB} -a $ATTACHED -s smtp.gmail.com:587 -xu ${ACCOUNT} -xp ${PASSWD} -o tls=yes
# sendemail -f ${MAILFROM} -t ${MAILTO} -m ${MESSAGE} -u ${MAILSUB} -a $ATTACHED # 既にPostfix導入済みの場合アカウント情報は不要
## トランザクションファイルを削除
rm -f $FILENAME
rm -f $ZIPFILE
- スクリプトを初めて保存した場合は起動可能ファイルにしてください。
$ sudo chmod +x /usr/local/bin/gatewaylog
- 毎日定時に報告メールが届くようにするには前項を参照してください。
Back
Alt+HOME
この 作品 は
クリエイティブ・コモンズ 表示 - 非営利 - 改変禁止 4.0 国際 ライセンス
の下に提供されています。
English
Powered by