作業
- ソースをcron.local.tar.bz2から入手する.
# wget http://www.ep.sci.hokudai.ac.jp/~epmail/y2023/dvlop/script/cron.local.tar.bz2 -P /etc/ (-Pは保存先の指定をするオプション)
- 展開する
# cd /etc/ && bzcat cron.local.tar.bz2 | tar xvf -
- 展開したファイルに実行権限がない場合には付ける
# ls -l /etc/cron.local/daily/*
# ls -l /etc/cron.local/weekly/*
# chmod 755 cron.local/daily/* cron.local/weekly/*
- netstat は非推奨になったため,以下のように一部コマンドを書き換え (元のコマンドはコメントアウトしている)
- rsyslog がレガシーなタイムスタンプから yyyy-mm-dd 型に変わったため対応
- 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 が届く
- crontab をリスタートする
# 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 "" |
# 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 に一件も引っかからない.
# systemctl restart cron