cron.local の導入方法


cron.local によるログ監視システムを導入する. これは以下のメールを管理者に送るシステムである

作業

  1. ソースをcron.local.tar.bz2から入手する.
    # wget http://www.ep.sci.hokudai.ac.jp/~epmail/y2023/dvlop/script/cron.local.tar.bz2 -P /etc/
    (-Pは保存先の指定をするオプション)
    
  2. 展開する
    # cd /etc/ && bzcat cron.local.tar.bz2 | tar xvf -
    
  3. 展開したファイルに実行権限がない場合には付ける
    # ls -l /etc/cron.local/daily/*

    # ls -l /etc/cron.local/weekly/*

    # chmod 755 cron.local/daily/* cron.local/weekly/*

  4. netstat は非推奨になったため,以下のように一部コマンドを書き換え (元のコマンドはコメントアウトしている)
  5. # vim /etc/cron.local/daily/420_status-network
    
    #!/bin/sh
    
    /bin/echo -e "**** Network interface status ****"
    #netstat -i -e
    ip -s link
    
    /bin/echo -e "**** Listening and established port status ****"
    #netstat -a -p -t -u | awk '{printf "%-5s %-23s %-23s %-11s %s %s\n", $1,$4,$5,$6,$7,$8}' | grep -v TIME_WAIT | grep -v Activ
    ss -tulpen | awk '
    BEGIN {
      printf "%-5s %-23s %-23s %-11s %-12s %-s\n", "Proto", "Local Address:Port", "Peer Address:Port", "State", "PID/Program", "Users"
    }
    {
      if ($1 != "Netid" && $1 != "")
        printf "%-5s %-23s %-23s %-11s %-12s %-s\n", $1, $5, $6, $2, $7, $8
    }'
    
    /bin/echo -e ""
    
    

  6. rsyslog がレガシーなタイムスタンプから yyyy-mm-dd 型に変わったため対応
  7. # vim /etc/cron.local/daily/800_authlog
    
    yesterday=`date "+%b %_d" --date "1 days ago"`
    
    これを以下のように書き換え
    
    #yesterday=`date "+%b %_d" --date "1 days ago"`
    yesterday=$(date "+%Y-%m-%d" --date "1 day ago")
    

    800_authlog のフィルタリングも書き直したほうがいいかも? grey も同様だが,refused connections, suspicious connections に一件も引っかからない.

  8. crontab に書きこむ
    # vim /etc/crontab
    

    以下を書きこむ.@grey にすると,サーバ入れ替え前でもログを受け取れて便利

    25 4 * * *   root    cd / && run-parts --report /etc/cron.local/daily | mail -s "`hostname -f` daily run outputs" epmail@grey.ep.sci.hokudai.ac.jp
    47 4 * * 7   root    cd / && run-parts --report /etc/cron.local/weekly | mail -s "`hostname -f` weekly run outputs" epmail@grey.ep.sci.hokudai.ac.jp
    
    # その他についても,時刻 (左から二つ目の値) を 6 から 4 に変更する.
    

    この設定だと毎朝の 4:25 に daily が,毎週 4:47 に weekly が届く

  9. crontab をリスタートする
  10. # systemctl restart cron
    

check-io-error.sh の導入方法


check-io-error.sh による I/O エラー監視システム.

作業

  1. check-io-error.sh.gz からソースを入手する
  2. # wget http://www.ep.sci.hokudai.ac.jp/~epmail/y2023/dvlop/script/check-io-error.sh_0.1.0.gz -P /etc/cron.daily/
    
  3. 展開する
  4. # cd /etc/cron.daily/
    # gunzip -d check-io-error.sh_0.1.0.gz
    # mv check-io-error.sh_0.1.0 check-io-error.sh
    
  5. 権限を与える
  6. # chmod 755 check-io-error.sh
    
  7. メールを送るアドレスを変更する
  8. # vim check-io-error.sh
    
    Address='epmail@grey.ep.sci.hokudai.ac.jp'
    

最終更新日:2025/07/29 (山本 峻大) Copyright © 2000-2025 epcore