index.htmlの動的生成CGI

MRTG用index.htmlを動的生成するシェルスクリプトCGI

使用方法

index.html生成パラメータを記載した設定ファイルを作成し、CGI実行時の引数として設定ファイルの絶対パスを指定する。

1. MRTG添付のindexmakerスクリプトでindex.htmlを生成 2. 生成したindex.htmlをデータ保管ディレクトリに配置 3. index生成パラメータを記載したindex.confを作成し、同ディレクトリに配置 4. CGIの引数としてindex.confの絶対パスを指定

index.conf

index.confは以下の内容を記載する。

mrtg-index.cgi

実行するには以下の箇所に設定を記載する必要がある。

実行時には以下の様に引数を与える。

/mrtg/mrtg-index.cgi?/home/mrtg/data/server/index.conf


#!/bin/sh
# ------------------------
#  MRTG index.cgi
# ------------------------
# Version : 1.0
# date    : 2007/12/27

export LANG=C
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:$PATH

## Set

LOGOIMG="/mrtg/img"
TEMPDIR=/home/httpd/mrtg/tmp

## Check

if [ -f $1 ]; then
 INDEXCONF=$1
else
 echo Content-type: text/html
 echo
 echo "<HTML><HEAD><TITLE>Script Error Page</TITLE></HEAD><BODY><CENTER>"
 echo "Script Parm Error<BR>"
 echo $1"<BR>"
 echo "</CENTER></BODY></HTML>"
 exit 0
fi

## Exec

RAND=`date +%Y%m%d%H%M%S`
DATADIR=`grep DATADIR $INDEXCONF | awk '{print $2}'`
SERVERNAME=`grep SERVERNAME $INDEXCONF | awk '{print $2}'`
OUTPUT=$TEMPDIR/$RAND.html
ITEMCOUNT=`grep ITEM $INDEXCONF | wc -l`
ITEMLIST=$TEMPDIR/$RAND.txt
TODAY=`date +%Y/%m/%d\ %H:%M:%S`
URLDATA=`grep URL $INDEXCONF | awk '{print $2}'`

## Init

echo "" >  $OUTPUT
grep ITEM $INDEXCONF > $ITEMLIST

## HTML OUTPUT

# Header
cat <<EOF >> $OUTPUT

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
    <TITLE>$SERVERNAME</TITLE>
    <meta http-equiv="content-type" content="text/html; charset=EUC-JP" >
    <META HTTP-EQUIV="Refresh" CONTENT="300" >
    <META HTTP-EQUIV="Cache-Control" content="no-cache" >
    <META HTTP-EQUIV="Pragma" CONTENT="no-cache" >
    <META HTTP-EQUIV="Expires" CONTENT="Wed, 26 Dec 2007 17:51:06 GMT" >
    <LINK HREF="favicon.ico" rel="shortcut icon" >
<style type="text/css">
body {
	background-color: #ffffff;
}
div {
	border-bottom: 2px solid #aaa;
	padding-bottom: 10px;
	margin-bottom: 5px;
}
div h2 {
	font-size: 1.2em;
}
	div.graph img {
	margin: 5px 0;
}
	div.graph table, div#legend table {
	font-size: .8em;
}
div.graph table td {
	padding: 0 10px;
	text-align: right;
}
div table .in th, div table td span.in {
	color: #00cc00;
}
div table .out th, div table td span.out {
	color: #0000ff;
}
div#legend th {
	text-align: right;
}
div#footer {
	border: none;
	font-size: .8em;
	font-family: Arial, Helvetica, sans-serif;
	width: 476px;
}
div#footer img {
	border: none;
	height: 25px;
}
div#footer address {
	text-align: right;
}
div#footer #version {
	margin: 0;
	padding: 0;
	float: left;
	width: 88px;
	text-align: right;
}
</style>

</HEAD>

<BODY bgcolor="#ffffff" text="#000000" link="#000000" vlink="#000000" alink="#000000">
<CENTER>

<TABLE width="90%">
<TR><TD width="90%" colspan="3"><HR></TD></TR>
<TR>
 <TD width="25%"></TD>
 <TD width="50%"><FONT size="5">$SERVERNAME</FONT></TD>
 <TD width="25%" valign="bottom"><FONT size="2">$TODAY</FONT></TD>
<TR><TD width="90%" colspan="3"><HR></TD></TR>
</TABLE>

<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=10>
EOF


# Body

i=1
while [ $i -le $ITEMCOUNT ];
do
 
ITMENAME=`sed -n -e ${i}"p" $ITEMLIST | awk '{print $2}'`
ITEMTITLE=`grep title  $DATADIR/$ITMENAME.html | sed -n -e 1p | sed "s/<title>//g" | sed "s/<\/title>//g"| sed -e "s/^\t\t//g"`
GRAPHITME=`grep -A24 "End Head" $DATADIR/$ITMENAME.html | grep -v End | grep -v Begin | grep -v div | grep -v "<h2>" | grep -v img | sed "s/\t//g"`

if [ -f $DATADIR/$ITMENAME.html ]; then

cat <<EOF >> $OUTPUT
<TR>
 <TD align="left">
  <B>$ITEMTITLE</B>
 </TD>
</TR>
<TR><TD>
  <div class="graph">
   <A href=$URLDATA/$ITMENAME.html> 
    <IMG border="1" src=$URLDATA/$ITMENAME-day.png>
   </A><BR>
  $GRAPHITME
</DIV>
</TD></TR>
EOF

fi

 i=$(($i+1))
done


# Footer
cat <<EOF >> $OUTPUT
</TABLE>

<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
  <TR>
    <TD WIDTH=63><A
    HREF="http://oss.oetiker.ch/mrtg/"><IMG
    BORDER=0 SRC="$LOGOIMG/mrtg-l.png" WIDTH=63 HEIGHT=25 ALT="MRTG"></A></TD>
    <TD WIDTH=25><A
    HREF="http://oss.oetiker.ch/mrtg/"><IMG
    BORDER=0 SRC="$LOGOIMG/mrtg-m.png" WIDTH=25 HEIGHT=25 ALT=""></A></TD>
    <TD WIDTH=388><A
    HREF="http://oss.oetiker.ch/mrtg/"><IMG
    BORDER=0 SRC="$LOGOIMG/mrtg-r.png" WIDTH=388 HEIGHT=25
    ALT="Multi Router Traffic Grapher"></A></TD>
  </TR>
</TABLE>
<TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0>
  <TR VALIGN=top>
  <TD WIDTH=88 ALIGN=RIGHT><FONT FACE="Arial,Helvetica" SIZE=2>
  version 2.15.2</FONT></TD>
  <TD WIDTH=388 ALIGN=RIGHT><FONT FACE="Arial,Helvetica" SIZE=2>
  <A HREF="http://tobi.oetiker.ch/">Tobias Oetiker</A>
  <A HREF="mailto:tobi+mrtglink@oetiker.ch">&lt;tobi@oetiker.ch&gt;</A>
  and&nbsp;<A HREF="http://www.bungi.com/">Dave&nbsp;Rand</A>&nbsp;<A HREF="mailto:dlr@bungi.com">&lt;dlr@bungi.com&gt;</A></FONT>
  </TD>
</TR>
</TABLE>

</CENTER>
</BODY>
</HTML>

EOF

## Disply HTML

echo Content-type: text/html
echo 
cat $OUTPUT

## Delete Temp Files

rm $OUTPUT
rm $ITEMLIST

# EOF

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2025-03-16 (日) 23:17:57