Day After Day
tsurezure naru mamani...
ANOTHER DECADE

from 2022 when it's begining after/with CORONA Virus.

RasPiのログをGmailにして送る(Bookworm)

12月
02
2023
Back
Alt+HOME


前回、Postfixを使用した平文のメールや、sendemailを用いたテキストファイル添付のものを送信するスクリプトを掲載しました。ところがRaspberryをBookwormに新規インストールして同様にsendemailのスクリプトを動かそうとしたのですが、うまく行きませんでした。そこで違うコマンドを探しやり直してみました。

ログデータ収集に関するスクリプトは、
獨協医科大学D-STARリピータ管理者 
髙田様よりご提供戴いたスクリプトを 
使用させて戴きました。


複数のログファイルから必要な行数を取り出し一つのファイルを作成


  1. メールとして送信する内容のファイルを作成するスクリプト

  2. $ sudo nano gatewaylog
    

      GNU nano 5.4                               gatewaylog
    #!/bin/bash
    
    ## 各ログファイル最新の20行を読み取ってhomeディレクトリにファイルを作成
    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
    

  3. /var/log フォルダに保存されている各ログファイルから tail コマンドで -n20 つまり20行ずつ取得し、次々に /home/user のファイル DSTARLOG に書き加えていきます。 ここまでスクリプトが書けたら一度保存します。

  4. ファイルの属性を変更して起動できるようにします。

  5. $ sudo chmod +x gatewaylog

  6. コマンドとしてパスの通っている /usr/local/bin へ移動します。

  7. $ sudo mv gatewaylog /usr/local/bin

  8. コマンドを実行してみます。

  9. $ gatewaylog
    $ ls
    DSTARLOG

    ホームディレクトリを一覧してみると、ログを集めたファイルが出来ているのが確認できると思います。

メールソフト導入の前にGoogleのアプリパスワードを入手する



  1. Google アカウントへ移行します。

  2. 左ペインメニューに有る「セキュリティ」をクリックします。

  3. 図のように、2段階認証プロセスが>オン になっていれば、 > をクリックします。

  4. グーグルの該当するメールアドレスに対するパスワードを入力します。

  5. 最下部に下図のような[アプリ パスワード]が表示されます。


  6. [App name   ]に適当なアプリの名前(今回ならばGatewayLog等)を付けたら[作成]をクリックします。

  7. 図のような16桁のパスワードが発行されます。

    このパスワードは、いつでも削除したり、生成したり出来ます。 注意点は使用中のパスワードを削除すると、そのパスワードを設定したアプリが使えなくなります。

    パスワードの流出には十分な注意を払ってください

    なお実際のアプリに設定する時は zzsfsjtphvditmiz のようにスペースを省きます。

    因みに、このパスワードは既に破棄しました^^;




テキストファイルを添付したメールを送る


  1. アプリパスワードの取得は終わっているものとします。

  2. まだの場合は前述のメールソフト導入の前にGoogleのアプリパスワードを入手するをご覧ください。

  3. 次のアプリケーションをインストールします。

  4. $ sudo apt install s-nail

  5. 自分のSMTPアカウントに関して前もって[ユーザID]や[パスワード]をエンコードしておく必要が有ります。

  6. $ echo 'urlcodec enc abcde@gmail.com' | s-nail -#
    abcde%40gmail.com
    

    パスワードも同様ですが、今回のものは zzsfsjtphvditmiz ですので記号を含まずエンコードの必要は有りません。

  7. スクリプトは次のように成ります。設定ファイルを別途設ける事も出来ますが、スクリプトの中でgmailサーバのアカウントやメールの設定を行いました。

  8. $ sudo nano /usr/local/bin/gatewaylog

      GNU nano 5.4                           /usr/local/bin/gatewaylog
    #!/bin/bash
    
    #////////////////////////////////////////////////////////////////
    #       最新ログをまとめGmailサーバを中継してメールする
    #////////////////////////////////////////////////////////////////
    
    ## 各ログファイル最新行を読み取ってhomeディレクトリにファイルを作成
    FILENAME=/home/opendv/DSTARLOG
    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
    
    ## メールヘッダーの作成
    MAILTO=abcde@gmail.com
    
    # テキストファイルの添付
    MESSAGE="添付ファイル: DSTARLOG"
    ATTACHED=/home/opendv/DSTARLOG
    
    ## メール送信
    echo ${MESSAGE} | s-nail -:/ -s "D-STAR Rpi-Gateway Log" -a ${ATTACHED} \
            -S v15-compat \
            -S mta=smtp://abcde%40gmail.com:zzsfsjtphvditmiz@smtp.gmail.com:587 \
            -S smtp-use-starttls \
            -S from=je3hcz@gmail.com ${MAILTO}
    
    ## トランザクションファイルを削除
    rm -f $FILENAME
    		

    メール送信コマンドの[\]は、Raspberryでは[\]になります。単に長いコマンドラインを改行ではなく、行を変えて接続します。 又、[-S]の部分が別途設定ファイルを設けた時に set v15-compat のように記述される部分です。

  9. スクリプトを初めて保存した場合は起動可能ファイルにしてください。

  10. $ sudo chmod +x /usr/local/bin/gatewaylog
    

毎日定時に報告メールが届くようにします。


  1. crondによって定時にコマンドが実行されるようにします。

  2. $ sudo nano /etc/crontab

      GNU nano 5.4                                    /etc/crontab
    #
    00 6    * * *   user  gatewaylog

    午前6時にユーザ名 user の権限にてコマンドgatewaylogが実行され、テストどおりに送信されるはずです。

  3. crontabを保存したら、cronに設定を認識させます。

  4. $ sudo systemctl restart cron

    以上で明日の朝からゲートウェイPCのアプリケーション状況が通達されるように成ります。



Back
Alt+HOME