変奏現実

パソコンやMMORPGのことなどを思いつくまま・・・記載されている会社名・製品名・システム名などは、各社の商標、または登録商標です。

この画面は、簡易表示です

MRTG

MRTGの文字化け

ブログの下にMRTGのHTMLファイルを置くと
HTMLに
<meta http-equiv=”content-type” content=”text/html; charset=euc-jp” >
と書いてあってもutf8と見なされるらしい。

cp /var/www/mrtg/cpu.html > /var/www/mrtg/temp

nkf -Ew /var/www/mrtg/temp > /var/www/mrtg/cpu.html

でutf8にすると文字化けは直る。
しかし、
<meta http-equiv=”content-type” content=”text/html; charset=euc-jp” >
のままなのは変なので

 #CPU

cp /var/www/mrtg/cpu.html /var/www/mrtg/temp

ed /var/www/mrtg/temp >& /dev/null << EOF

1,\$s/euc-jp/utf8/g

wq

EOF

nkf -Ew /var/www/mrtg/temp > /var/www/mrtg/cpu.html

と強引に変えておくといいのかもしれない。
ただ

<!– Begin Head –>

<head>

<title>CPU使用率</title>

<meta http-equiv=”refresh” content=”300″ />

<meta http-equiv=”pragma” content=”no-cache” />

<meta http-equiv=”cache-control” content=”no-cache” />

<meta http-equiv=”expires” content=”Wed, 25 Jan 2012 21:20:07 GMT” />

<meta http-equiv=”generator” content=”MRTG 2.16.2″ />

<meta http-equiv=”date” content=”Wed, 25 Jan 2012 21:20:07 GMT” />

<meta http-equiv=”content-type” content=”text/html; charset=utf8″ /> ←タイトルの後に書いてどうする?

とHTMLがあからさまに間違っているのを

<!– Begin Head –>

<head>

<meta http-equiv=”content-type” content=”text/html; charset=utf8″ /> ← ここが正解

<title>CPU使用率</title>

<meta http-equiv=”refresh” content=”300″ />

<meta http-equiv=”pragma” content=”no-cache” />

<meta http-equiv=”cache-control” content=”no-cache” />

<meta http-equiv=”expires” content=”Wed, 25 Jan 2012 21:20:07 GMT” />

<meta http-equiv=”generator” content=”MRTG 2.16.2″ />

<meta http-equiv=”date” content=”Wed, 25 Jan 2012 21:20:07 GMT” />

 と直すには
/usr/bin/mrtgの1388行あたりで

print HTML “<!– Begin Head –>\n”;
print HTML <<“TEXT”;
<head>
TEXT
print HTML “\t\t” . ‘<meta http-equiv=”content-type” content=”text/html; charset=utf8″ />’ . “\n”;
print HTML <<“TEXT”; 
<title>$$rcfg{‘title’}{$router}</title>
<meta http-equiv=”refresh” content=”$refresh” />
<meta http-equiv=”pragma” content=”no-cache” />
<meta http-equiv=”cache-control” content=”no-cache” />
<meta http-equiv=”expires” content=”$expiration” />
<meta http-equiv=”generator” content=”MRTG $VERSION” />
<meta http-equiv=”date” content=”$expiration” />
TEXT
#    print HTML “\t\t” . ‘<meta http-equiv=”content-type” content=”text/html; charset=’.&$LOC(‘iso-8859-1’) . “\” />\n”;

にすればいいので

 #CPU

cp /var/www/mrtg/cpu.html /var/www/mrtg/temp

ed /var/www/mrtg/temp >& /dev/null << EOF

1,\$s/euc-jp/utf8/g

wq

EOF

nkf -Ew /var/www/mrtg/temp > /var/www/mrtg/cpu.html


#CPU

cp /var/www/mrtg/cpu.html /var/www/mrtg/temp

nkf -Ew /var/www/mrtg/temp > /var/www/mrtg/cpu.html

と短くなる。
だが良く考えてみると、
Perl自体、既に5.8でutf8対応済みなので、/usr/bin/mrtgのコードが旧体質のままだったのだ。
実は元ネタですべきことは、
上のmrtg(Perlソース)の古式ゆかしく嗚呼懐かしやなiso-8859-1(ラテン系コードページ)ごまかしコードを書き換え、
/etc/mrtg/mrtg.cnfを手直しするだけでよく
nfkでの変換までやるのは既に藪蛇。
ただ、

charset=’.&$LOC(‘iso-8859-1’) . “\” />\n”;

content=”text/html; charset=utf8″ />’ . “\n”;

に書き直すのはチョットかっこ悪いし、maxも日本語化されない。
それよりもMRTGの各国語版の翻訳が1ファイルになってて
普通のエディタで修正不能なんだな。
ああ、だからiso-8859-1使ってた訳か。
ええと翻訳直すんならソース一式からやり直してください???
えええ???
 



MRTG

元ネタはここ。
MRTGをインストして、
# cfgmaker –ifref=descr –ifdesc=descr public@192.168.***.***  > /etc/mrtg/mrtg.cfg
で、設定が大体でき、
# indexmaker –columns=1 \
> –addhead=”<META HTTP-EQUIV=\”Content-Type\” CONTENT=\”text/html; charset=euc-jp\”>” \
> /etc/mrtg/mrtg.cfg > /var/www/mrtg/index.html
で、index.htmlを作る。
 
 




top