www.smiyasaka.com は、 2021 年 1月から CentOS Stream 8 にバージョンアップしました。

Logwatch の rooo宛てメールを
ホームページとして簡単にみられるプログラム



Logwatch の rooo宛てメールをホームページに表示するためのプログラムは、四つの プログラムで構成されています。
プログラム(A),(B)は、cron で定時実行させて使用します。
プログラム(C)は、ホームページに組込む SSI で読みたいメールの日付を指定します。
プログラム(D)は、プログラム(C)で指定された日付のメールを表示する cgi です。

(A) Logwatch の rooo宛てメールをホームページとして見られる様に するためのシェルスクリプト
   下記設定でcron で毎日 4時30分に実行させています。
   30 4 * * * /var/www/○○○○/root_mail_del.sh > /dev/null 2>&1
   root_mail_del.sh は、下記のプログラム名です。
   ( ○○○○は、ユーザー名です。)

   このプログラムの処理機能
     ① rooo宛てメールをホームディレクトリへ転送する。
   ② 11日前のメールを削除する。
   ③ spool/mail/root のメールデータを削除する。

   下記プログラムが使用するフォルダの設定

     mkdir -p /home/○○○○/root_mail; \
     chown -R ○○○○:○○○○ /home/○○○○/root_mail; \
     chmod -R 644 /home/○○○○/root_mail

-----------------------------------------------------------------
#!/usr/bin/sh
#----------------------------------------
#    root宛てのメールを保存する。
#----------------------------------------
DAY_1AGO=`/bin/date --date '1day ago' +%Y%m%d` # yyyymmdd
#
LOGNAME1=/home/○○○○/root_mail/root$DAY_1AGO # rootyyyymmdd
#
# root メールをコード変換してホームページディレクトリへコピーする。
# 元のコード指定なし ---> Shift-JIS( -s )
# EUC-JP と Shift-JIS コードが混在しているので、元のコード指定しない。
#
/usr/local/bin/nkf -s /var/spool/mail/root > $LOGNAME1
#
# 11日前のメールファイルは削除する。
DAY_11AGO=`/bin/date --date '11day ago' +%Y%m%d` # yyyymmdd
AGO_11File="root$DAY_11AGO"
#
rm -rf /home/○○○○/root_mail/$AGO_11File > /dev/null 2>&1
#
# 移動したので root 宛てのメールを削除する。
#
rm -rf /var/spool/mail/root > /dev/null 2>&1
#
# 所有者を○○○○に変更
#
chown -R ○○○○:○○○○ /home/○○○○/root_mail
chmod 644 $LOGNAME1
#
# 空のrootファイルを作る
#
touch /var/spool/mail/root > /dev/null 2>&1
#

(B) DiCE のイベントログの rooo宛メールとして送るシェルスクリプト

    下記設定でcron で土曜日の 23時58分に実行させています。
    58 23 * * 6 /var/www/○○○○/dice_mail_send.sh
    dice_mail_send.sh は、下記のプログラム名です。
-----------------------------------------------------------------
#!/bin/sh
#
# DiCEの実行結果を root 宛にメールを送る。
#
     cat /usr/local/DiCE/log/events.log | mail -s "**** DiCE events ****" root

(C) ホームページ上の option リストをアクセス時の日付から、
    10日分作成する SSI プログラム( 下記のようなフォームを作成する。 )



この様なオプションボタンの フォームを作る
logwatch01
オプションリストを開いた時
logwatch02

    上記表示の SSI は、<!--#exec cmd="./log_day_get.pl"--> で実行させる。

    log_day_get.pl は、下記のプログラム名です。

-----------------------------------------------------------------
#!/usr/bin/perl
#----------------------------------------------------------------
#     root mail のログ日を指定する SSI
#----------------------------------------------------------------
# option リスト 1日前の年月日作成
$Ago_day = 1;
($sec,$min,$hour,$day,$mon,$year) = localtime(time-24*60*60*$Ago_day);
$year += 1900; # 年を西暦にする。
$mon++; # 1月のデータが 0 なので +1 する。
&yyyymmdd; # $today = yyyymmdd
$Mday = $mon." 月 ".$day." 日"; # n 日前の月日
#----------------------------------------------------------------
$Fmsg =<<"msg";
<!-- ここから、log_day_get.cgi start -->
     <form method="get" action="root_log.cgi">
     <font color="black" size="2">指定日</font><select name="logday">
     <option selected value="$today">$Mday</option>
msg
     print "$Fmsg";
#----------------------------------------------------------------
#     option リスト 2 ~ 10日前の年月日作成
$i = 2;
while ($i < 11){
     ($sec,$min,$hour,$day,$mon,$year) = localtime(time-24*60*60*$i);
     $year += 1900; # 年を西暦にする。
     $mon++; # 1月のデータが 0 なので +1 する。
     &yyyymmdd; # $today = yyyymmdd
     $Mday = $mon." 月 ".$day." 日"; # n 日前の月日
#     print "<option value=\"$today\">$Mday</option>\n";
     $i++;
$Fmsg =<<"msg";

     <option value="$today">$Mday</option>
msg
     print "$Fmsg";
}
#----------------------------------------------------------------
$Fmsg =<<"msg";
</select>
     <input type=submit value="root Mail\x95\x5C示"></form>
<!-- ここで、log_day_get.cgi end -->
msg
     print "$Fmsg";
#----------------------------------------------------------------
exit(0);
#----------------------------------------------------------------
sub yyyymmdd {
# yyyymmddをつくる。
#
$Nmon = sprintf ("%02d",$mon); # mm表記にする。
$Nday = sprintf ("%02d",$day); # dd表記にする。
$today = $year.$Nmon.$Nday; # yyyymmdd
#
return;
}

-----------------------------------------------------------------
(D-1)下記の cgi プログラムをセンター表示するための
CSS プログラム style.css で保存してください。
-----------------------------------------------------------------
#container{
width:1000px;
margin-left:auto;
margin-right:auto;
border-style: none;
}

-----------------------------------------------------------------
(D-2)Logwatch の rooo宛てメールをホームページとして表示する cgi プログラム
log_day_get.pl のプログラムの<form method="get" action="root_log.cgi">
から、実行されるプログラム
root_log.cgi は、下記のプログラム名です。

root宛てのログのテキストには、HTML では、特殊文字になる &,<,>," が
含んでいるので、 文字置換をしています。
-----------------------------------------------------------------

#!/usr/bin/perl
#
print "Content-type: text/html\n";
print "\n";
$Fmsg =<<"msg";
<!DOCTYPE html>
<html lang="ja">
<head><title>Logwatchのroot宛てメール</title>
<link rel="shortcut icon" href="favicon.ico">
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<meta content="text/css" http-equiv="Content-Style-Type">
<meta content="text/javascript" http-equiv="Content-Script-Type">
<link rel="stylesheet" href="style.css" type="text/css" media="all">
</head>
<body>
<div id="container">
<table border="0"><col width="100"><col width="100"><col width="100">
<tr>
<td></td>
<td align="right">
     <form action="../../index.html" method="GET">
     <input type="submit" name="sub1" value="index.htmlへ戻る">
     </form></td>
<td align="left">
     <form action="myloglist.html" method="GET">
     <input type="submit" name="sub2" value="元のページへ戻る">
     </form></td>
</tr>
</table>
msg
     print "$Fmsg<br>";
#----------------------------------------------------------------

#---------------------------------------------------------------
$form_data = GET_form();
$form_data =~ s/logday=//;
#
$logfile = "root$form_data";
$logfiledir_in = "/home/○○○○/root_mail/$logfile";
#
# 1文字目から4文字を取り出す
   $yyyy = substr($form_data, 0, 4); # 年
# 5文字目から2文字を取り出す
   $mm = substr($form_data, 4, 2); # 月
# 7文字目から2文字を取り出す
   $dd = substr($form_data, 6, 2); # 日
#---------------------------------------------------------------
if (-f $logfiledir_in) {
     }else{
         print "<br><p><b>$logfileのメールは、ありません。</b></p>\n";
         exit;
}
#
# 読取モードで $logfiledir_in のファイルを開く
#
open( get_data, "<$logfiledir_in");
#
# root宛てメールデータのHTML出力
#
     print "<b><p>$yyyy年$mm月$dd日のroot宛てメールデータ</p></b>";
     print "<p><pre>\n";
     while(<get_data>) {
         ~ s/&/&amp;/gi; <---- & を &amp; に変換する。
         ~s/</&lt;/gi; <---- < を &lt; に変換する。
         ~s/>/&gt;/gi; <---- > を &gt; に変換する。
         ~s/"/&quot;/gi; <---- " を &quot; に変換する。
         print "$_";
     }
     print "</p></div></body></html>\n";
#
close(get_data);
# 終了
exit(0);
#---------------------------------------------------------------
#   form action="○○○" method="GET" のデータを取得する。
#
sub GET_form{
     local $form_data;
     $form_data = $ENV{'QUERY_STRING'};
     return $form_data;
}
#---------------------------------------------------------------
#   form action="○○○" method="POST" のデータを取得する。
#
sub POST_form{
     local $form_data;
#     STDIN : 標準入力
     read(STDIN, $form_data, $ENV{'CONTENT_LENGTH'});
     return $form_data;
}
#---------------------------------------------------------------


-----------------------------------------------------------------
     Logwatch で分かるサーバ機の動作情報の項目と概要
     ( このセクションのつづきに、Logwatch のログの表示例を掲載しています。)
     Logwatch のログの詳細度(Detail)は、中(Med)にしています。
-----------------------------------------------------------------

---------------------clam-update Begin ------------------------
・clamのアップデート情報が分かります。
----------------------clam-update End -------------------------

--------------------- Clamav Begin ------------------------
・1日のうちにclamavのデータベースチェックの何回実行されたかが分かります。
標準では、10分間隔で一日に144回になります。
---------------------- Clamav End -------------------------

--------------------- Cron Begin ------------------------
・定時に行われているCron処理内容
1日のうちにどのプログラムが、何回実行されたかが分かります。
---------------------- Cron End -------------------------

--------------------- ftpd-xferlog Begin --------------------
・1日のうちにサーバーからどれだけの容量のデータが入出力されたのか
が分かったります。
---------------------- ftpd-xferlog End ----------------------

--------------------- Kernel Begin ------------------------
・kernelにおける起動またはエラー情報が分かります。
---------------------- Kernel End -------------------------

--------------------- pam_unix Begin ------------------------
・Linuxのpam認証においての認証成功または失敗
つまり、Tera Termでアクセスした履歴が確認できます。
---------------------- pam_unix End -------------------------

--------------------- proftpd-messages Begin ----------------
・proftpdへのログイン履歴が確認できます。
つまり、ffftp でアクセスした履歴が確認できます。
---------------------- proftpd-messages End -----------------

--------------------- Connections (secure-log) Begin --------
・Connections (ecure-log) ユーザー追加時など
---------------------- Connections (secure-log) End ---------

--------------------- sendmail Begin (detail=3) -------------
・メール送信サーバに関するログです。
メールの回数・容量が確認できます。
---------------------- sendmail End -------------------------

--------------------- SSHD Begin ------------------------
・接続が成功した場合は、そのIPアドレス(またはホスト名)が確認できます。
つまり、Tera Termでアクセスした履歴が確認できます。
---------------------- SSHD End -------------------------

--------------------- yum Begin ------------------------
・yum -y updateでアップデートされたパッケージ名が確認できます。
---------------------- yum End -------------------------

--------------------- Disk Space Begin ------------------------
・Disk Space Linuxのディスクスペース使用状況が確認できます。
---------------------- Disk Space End -------------------------

-----------------------------------------------------------------
root宛てmailの表示例
-----------------------------------------------------------------



2022年01月30日のroot宛てメールデータ

From root@LeoMiya  Sun Jan 30 23:02:04 2022
Return-Path: <root@LeoMiya>
Received: from LeoMiya (localhost [127.0.0.1])
	by LeoMiya (8.15.2/8.15.2) with ESMTPS id 20UE24B4860884
	(version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=2 ...
	for <root@LeoMiya>; Sun, 30 Jan 2022 23:02:04 +0900
Received: (from root@localhost)
	by LeoMiya (8.15.2/8.15.2/Submit) id 20UE24Fh860883;
	Sun, 30 Jan 2022 23:02:04 +0900
Date: Sun, 30 Jan 2022 23:02:04 +0900
Message-Id: <202201301402.20UE24Fh860883@LeoMiya>
From: "(Cron Daemon)" <root@LeoMiya>
To: root@LeoMiya
Subject: Cron <root@LeoMiya> dnf -y update
MIME-Version: 1.0
Content-Type: text/plain; charset=EUC-JP
Auto-Submitted: auto-generated
Precedence: bulk
X-Cron-Env: <XDG_SESSION_ID=21641>
X-Cron-Env: <XDG_RUNTIME_DIR=/run/user/0>
X-Cron-Env: <DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/0 ...
X-Cron-Env: <LANG=ja_JP.eucJP>
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/root>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=root>
X-Cron-Env: <USER=root>

メタデータの期限切れの最終確認: 3:15:32 時間前の 2022年01月30 ...
依存関係が解決しました。
行うべきことはありません。
完了しました!

From root@LeoMiya  Mon Jan 31 02:01:04 2022
Return-Path: <root@LeoMiya>
Received: from LeoMiya (localhost [127.0.0.1])
	by LeoMiya (8.15.2/8.15.2) with ESMTPS id 20UH14T0863273
	(version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=2 ...
	for <root@LeoMiya>; Mon, 31 Jan 2022 02:01:04 +0900
Received: (from root@localhost)
	by LeoMiya (8.15.2/8.15.2/Submit) id 20UH14ns863257
	for root; Mon, 31 Jan 2022 02:01:04 +0900
From: root <root@LeoMiya>
Message-Id: <202201301701.20UH14ns863257@LeoMiya>
Date: Mon, 31 Jan 2022 02:00:04 +0900
To: root@LeoMiya
Subject: *** rootkit check ***
User-Agent: Heirloom mailx 12.5 7/5/10
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit

 開始時間   2時00分01秒
 終了時間   2時00分04秒
 処理時間  0分 3秒
**** rootkit check OK ****

From root@LeoMiya  Mon Jan 31 03:22:03 2022
Return-Path: <root@LeoMiya>
Received: from LeoMiya (localhost [127.0.0.1])
	by LeoMiya (8.15.2/8.15.2) with ESMTPS id 20UIM3qW864174
	(version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=2 ...
	for <root@LeoMiya>; Mon, 31 Jan 2022 03:22:03 +0900
Received: (from root@localhost)
	by LeoMiya (8.15.2/8.15.2/Submit) id 20UIM3RT863875;
	Mon, 31 Jan 2022 03:22:03 +0900
Date: Mon, 31 Jan 2022 03:22:03 +0900
Message-Id: <202201301822.20UIM3RT863875@LeoMiya>
To: root@LeoMiya
From: logwatch@LeoMiya
Subject: Logwatch for LeoMiya (Linux)
Auto-Submitted: auto-generated
Precedence: bulk
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="iso-8859-1"

 
 ########## Logwatch 7.4.3 (04/27/16) ############ 
        Processing Initiated: Mon Jan 31 03:21:03 2022
        Date Range Processed: yesterday
                              ( 2022-Jan-30 )
                              Period is day.
        Detail Level of Output: 5
        Type of Output/Format: mail / text
        Logfiles for Host: LeoMiya
 ####################################### 
 
 --------------------- clam-update Begin ------------------------ 

 The ClamAV update process was started 1 time(s)
 
 Last ClamAV update process started at Sun Jan 30 01:00:01 2022
 
 Last Status:
    daily database available for update (local version: 26436, remot ...
    Testing database: '/var/lib/clamav/tmp.f4fff20d78/clamav-7a616ad ...
    Database test passed.
    daily.cld updated (version: 26437, sigs: 1972993, f-level: 90, b ...
    main.cvd database is up-to-date (version: 62, sigs: 6647427, f-l ...
    bytecode.cvd database is up-to-date (version: 333, sigs: 92, f-l ...
    p-to-date (version: 333, sigs: 92, f-level: 63, builder: awillia ...
 
 ---------------------- clam-update End ------------------------- 

 
 --------------------- Kernel Begin ------------------------ 

 
 1 Time(s): uvcvideo: Failed to query (GET_MAX) UVC control 2 on unit ...
 1 Time(s): uvcvideo: Failed to query (SET_CUR) UVC control 2 on unit ...
 
 ---------------------- Kernel End ------------------------- 

 
 --------------------- sendmail Begin ------------------------ 

 
 
 **Unmatched Entries**
    My unqualified host name (LeoMiya) unknown; sleeping for retry   ...
    unable to qualify my own domain name (LeoMiya) -- using short na ...
 ---------------------- sendmail End ------------------------- 

 
 --------------------- SpamAssassin Begin ------------------------ 

 
 **Unmatched Entries**
    unable to qualify my own domain name (LeoMiya) -- using short na ...
    My unqualified host name (LeoMiya) unknown; sleeping for retry:  ...
 
 ---------------------- SpamAssassin End ------------------------- 

 
 --------------------- Disk Space Begin ------------------------ 

 Filesystem                   Size  Used Avail Use% Mounted on
 devtmpfs                     3.8G     0  3.8G   0% /dev
 /dev/mapper/cs_leomiya-root   70G   15G   56G  21% /
 /dev/mapper/cs_leomiya-home   39G  2.6G   37G   7% /home
 /dev/sda3                   1014M  300M  715M  30% /boot
 /dev/sda1                    599M  7.3M  592M   2% /boot/efi
 /dev/sdb1                     15G  4.3G   11G  29% /home/SD_Card
 
 
 ---------------------- Disk Space End ------------------------- 

 
 --------------------- lm_sensors output Begin ---------------------

 acpitz-virtual-0
 Adapter: Virtual device
 temp1:        +27.8 C  (crit = +119.0 C)
 temp2:        +29.8 C  (crit = +119.0 C)
 
 coretemp-isa-0000
 Adapter: ISA adapter
 Package id 0:  +21.0 C  (high = +100.0 C, crit = +100.0 C)
 Core 0:        +19.0 C  (high = +100.0 C, crit = +100.0 C)
 Core 1:        +20.0 C  (high = +100.0 C, crit = +100.0 C)
 
 
 ---------------------- lm_sensors output End -----------------------

 
 ############### Logwatch End ############ 

^