snmpを実際に使ってみる
今回は、PHPで無理やり情報を取得してみる。
本来はPHP上のsnmp用関数を利用するのが良いのだろうが、前回snmpwalkが動作するのを確認しているので、子プロセスで動かして情報を拾ってみる。
今後、Web上に出力するとかファイルん書き込むとか、Nativeの関数もあるといううことでPHPを選択してみた。
さっくりとテストコードを書いてみる。
ターゲットは、BuffaloのNAS、「TeraStation」にしてみる。
こいつは、設定でSNMPをONにすることで、ちゃんと返してくれるらしい。
<?php
$cmd = "/usr/bin/snmpwalk";
$version = "-v2c";
$comunity = "TeraStation";
$ips = ["192.168.11.86"];
$oids = [
"1.3.6.1.4.1.5227.27.1.3.1.3.1"=>"GB",
"1.3.6.1.4.1.5227.27.1.3.1.4.1"=>"%"
];
foreach($ips as $ip){
foreach($oids as $oid=>$dummy){
$temp = exec("{$cmd} {$version} -c {$comunity} {$ip} {$oid}");
$values[$oid] = substr($temp,strrpos($temp," ")+1);
}
}
echo date("Y-m-d H:i:s ");
foreach($values as $key=>$value){
echo "{$value} {$oids[$key]} ";
}
echo "\n";
コミュニティは「TeraStation」を指定する。
今後、対象が増えても良いように、IPとOIDは配列にしておく。
マニュアルを探しながら、Buffaloのサイトを検索すると、MIB(SNMPのOIDに関する情報)がダウンロードできることがわかった。
で、ディスクのサイズと、使用量のみを拾うことにした。
上記のコードを、snmp.phpとして保存し、端末で実行する。
$ php snmp.php
これで、無事に情報を拾って、画面上に出力できることがわかった。
一応、最後で 実行時の日時と、容量、使用割合を出力して終了する。
$ php snmp.php >> result.txt
とすれば、結果をresult.txtに追記する。
あとは、cronで1時間に1回とか動かしてやれば、まあ問題ないでしょう。
すべてをPHPで作らなくても、既存のコマンドとOSの機能を使えば、簡単に情報が取得できそう…。
コメント
コメントを投稿
励みになりますので、簡単で良いので一言くださいませ。