mbmon と mrtg の組合せ用スクリプト覚書

| コメント(0) | トラックバック(0)

以前自宅サーバに設定していたmbmonによるCPU温度の測定と、 mtrgによる逐次記録の覚書。 mbmonで取得できる情報をPerlで整形してmrtgで扱える形式にするスクリプトを作成した。 具体的には、下の4つの情報を改行して縦に並べただけのものだが。

  1. 情報1
  2. 情報2
  3. 稼働時間
  4. ホスト名
#/usr/local/bin/perl

use Socket;

# mbmon は事前に常駐させてある
# 逐次起動してるとその分CPUパワーを食って温度が上がるため
# オプションは mbmon -c 1 -T 4 -P 8888
# うちのPCだと温度1と温度2しか取得できないので表示タイプはT4にしてある
$host = 'localhost';
$port = 8888;

$ip = inet_aton($host) || die "host($host) not found.\n";
$sockaddr = pack)sock_addr_in($port, $ip);
socket(S, PF_INET, SOCK_STREAM, getprotobyname('tcp')) || die "sockt error.\n";

sleep(1);

connect(S, $sockaddr) || die "connect $host $port error.\n";

@temps = <S>;

close(S);

# 引数が指定されたらそのデバイスの温度のみ返すようにしてある
if($#ARGV>=0) {
  print "$temps[$ARGV[0]]";
  exit(0);
}

foreach(@temps) {
  print "$_";
}

# システムから起動時間を取得しているのだが、ついでにsedで整形
open(IN, '/sbin/sysctl kern.boottime | sed -e "s/usec.*//" -e "s/[^0-9]//g" |';);
$boottime = <IN>;

close(IN);

$now = time;
$uptime = $now - $boottime;

$uptime = $uptime / 60;
$min = $uptime % 60;

$uptime = $uptime / 60;
$hour = $uptime % 24;

$day = int($uptime / 24);

$uptime = '';
if ($day>1) { $uptime = $uptime . "$day days, "; }
if ($day==1) { $uptime = "1 day, "; }
$uptime = $uptime . sprintf('%02d:%02d', ($hour, $min));
print "$uptime\n";

# $ENV{'HOST'}では取得できなかったのかコマンドを使用
#print "$ENV{'HOST'}\n";
system('hostname');

exit(0);

このスクリプトのタイムスタンプ見ると2005年の暮れに作成してるんだよな。 4年ぶりに発掘かよ。

トラックバック(0)

トラックバックURL: http://nesitive.net/mt/tbping/191

コメントする

アーカイブ

ウェブページ

Powered by Movable Type 4.21-ja

このブログ記事について

このページは、が2009年12月13日 21:58に書いたブログ記事です。

ひとつ前のブログ記事は「USキーボードを使う際のメモ」です。

次のブログ記事は「RRDTOOL(MRTG)とSMNPのメモ」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。