久々の更新

生きてました。
遂に仕事を抜け出して時間ができたので、今現在の絵チャ用スクリプトcactiXMLあたりを備忘録代わりに書き出す予定です
ただ、絵チャスレごと無くなったから、この先生きのこる方法さえもわからないんですよ('A`)


ちなみに現在の鯖の構成。

  • Atom N230(1.60GHz)/RAM:1GB (←おさがりPCから新規PCに変更。ちっちゃくなりました(容積的に))

取得した温度をCactiで表示させる

まぁ別段特別な事はしないんですけどね、あんまり資料も無かったので書いておきます。

Data Input Methods

image(196480byte)

  • Name : 今後使うMethod名。好きなもので。 
  • Input Type : Script/Command
  • Input String : cat /hogehoge/temper.tmp

そしてOutput FieldsへAddし、CelsiusとFahrenheitを作成。

  • Celsius
    • Field [Output] : Celsius
    • Friendly Name : TEMP(C)
    • Update RRD File : true
  • Fahrenheit
    • Field [Output] : Fahrenheit
    • Friendly Name : TEMP(F)
    • Update RRD File : true

Graph Templates

image(414484byte)
Graph TemplatesへAddし、"Item #1"〜"Item #5"を作成。

  • Item #1
    • Data Source : [Data Input Methods]で作成したMethod
    • Color : 00BF47
    • Opacity/Alpha Channel : 100%
    • Graph Item Type : LINE2
    • Consolidation Function : AVERAGE
    • CDEF Function : None
    • Value :
    • GPRINT Type : Normal
    • Text Format : main
    • Insert Hard Return : faulse
  • Item #2
    • Data Source : #1と同じ
    • Color : None
    • Graph Item Type : GPRINT
    • Consolidation Function : MAX
    • CDEF Function : None
    • Value :
    • GPRINT Type : Exact Number
    • Text Format : Max :
    • Insert Hard Return : faulse
  • Item #3
    • Data Source : #1と同じ
    • Color : None
    • Graph Item Type : GPRINT
    • Consolidation Function : LAST
    • CDEF Function : None
    • Value :
    • GPRINT Type : Exact Number
    • Text Format : Current:
    • Insert Hard Return : faulse
  • Item #4
    • Data Source : #1と同じ
    • Color : None
    • Graph Item Type : GPRINT
    • Consolidation Function : MIN
    • CDEF Function : None
    • Value :
    • GPRINT Type : Exact Number
    • Text Format : Min:
    • Insert Hard Return : faulse
  • Item #5
    • Data Source : #1と同じ
    • Color : None
    • Graph Item Type : GPRINT
    • Consolidation Function : AVERAGE
    • CDEF Function : None
    • Value :
    • GPRINT Type : Exact Number
    • Text Format : Average:
    • Insert Hard Return : true

Devices

image(238852byte)
Devicesにある該当ホストを選択、Create Graphs for this Hostをクリック

image(20829byte)
Createから作成したテンプレートを選択し、一番下の[Create]をクリックすればグラフができる…はずです。

cronの設定

当然ですが、cronのスケジュールにtemper.txtを更新させる事をお忘れなく。

*/5 * * * * root /hogehoge/temper

別にStandaloneで動かし続けても良いんですが、イチイチinit.dに書かないといけないのでキャンセルですヽ(´ー`)ノ

Linuxで温度測定 その3

いつの間にかレスが出てたので…

レスありがとうございました。 遅くなりましたが報告となります。

http://www.relavak.com/downloads/temper-1.0.tgz

をDLし展開。 binaryはありますが、一度消してmakeしなおしたほうが良いでしょう。
ただし、初期状態では10秒ごとに自動更新するstandalone形式のため、色々不便です。 というわけで、temper.cの最後のほうを変更しました。


for(;;) {
float tempc;

if(TemperGetTemperatureInC(t, &tempc) < 0) {
perror("TemperGetTemperatureInC");
exit(1);
}
printf("temperature %.2fF %.2fC\n", (9.0 / 5.0 * tempc + 32.0),tempc);

FILE *outputfile;
outputfile = fopen("/hogehoge/temper.tmp", "w");
fprintf (outputfile, "Fahrenheit:%.2f Celsius:%.2f", (9.0 / 5.0 * tempc + 32.0),tempc);
fclose (outputfile);
sleep(10);
}
return 0;
白文字は削除、赤文字が追加分です。(ファイル出力部については、toto氏にご教授いただきました。thx!)
変更が終わったらバイナリを一旦待避してから(su権限で)make実行。
これで実行する度に/hogehoge/temper.tmpが更新されるので、Cactiで読み込んであげればグラフの完成となります。

以下、おまけ。

Linuxで温度測定 その2

Linuxで楽にイケるっぽいもの

ヒューマンインターフェースデバイス (Human Interface Device)で認識するっぽいもの

しかし、232もHumも売ってるところが見つからないんだよなぁ。
もう諦めたほうがいい?

# MVPen (Pegasus Mobile NoteTaker) の解析 (1) - daily dayflower
 HumanInterfaceDeviceのパケット解析について書かれてた。


(3/22追記)
HumanInterfaceDevicesのTEMPerUSBでもLinuxで使えるようになりました

Linuxで温度測定

Cactiを使って色んな温度を測定できるようになってはみたものの、さて室温に対してどれほど上がっているのか、という根本的な疑問がわき上がってきました。

そこで思い出したのが、これ。
http://www.march-rabbit.jp/index.php?main_page=product_info&cPath=17_99&products_id=2008
昔、AkibaWatchか何かで見たやつです。 ググってみたら中身のプロトコルRS232Cらしいが、型名で検索してもLinux用ドライバとかは見あたらない。
代わりに見つけたのが、製造元(?)と思われる中国のサイト。
PCsensor.com , RDing tech
幸いにも英語表記だったので探してみると、ありました。Linux用ドライバ。
ただ、これは上記の『TEMPerNTC』用ではなくて『TEMPer232』という別商品用…のように見える。 DLしてみると"USB Driver"としか無いので、他の機種で使えるかどうかは不明。
ちなみにその『TEMPer232』とやらはeBayで買えるらしい。

どっちも買ってみて、使えたらラッキーなのかも?
まだeBayなんかの海外通販って経験が無いので、誰か人柱になりませんか?w

#Zipの中にはFedora用とRedhat用が入ってた。Debian系はFedora用使えばいいのかな?
#ググってみたらPython用のスクリプトも転がってたので、TEMPer232のほうは密かに実績があるのかもしれない。

接続人数のスクリプト 更新しました

前のPCから替えたときに、Debian GNU/LinuxからXubuntuに変更したんですが、その頃から以前のスクリプトが使えなくなって、何が原因かわからずに最近まで放置してました。
で、何が原因かと思ったら、標準のシェルスクリプトbashからdashに変わっている事を知らなかったのが原因でした('A`)
急いで「#!/bin/sh」だったのを「#!/bin/bash」に変更して、ひとまず動くようにはなったのですが、つい先日違うバグを見つけまして…

例のスクリプトでVer2.51とVer3.66の両方の接続人数をカウントしてたんですが、今までのスクリプトはVer3.66のアクセス数を見るために作ったもので、Ver2.51のほうは確実なチェックをしてませんでした。実は。
昨日なんとなく接続数とnetstat -6を見る機会があって、その時初めてVer2.51のアクセス数が半分になってると気づいたわけです。
原因は、Ver3.xxは同じポート番号を使用して、文字チャットと絵チャットのデータをやりとりしているのに対し、Ver2.51はそれぞれが別ポート番号なため、強制的に半分にしている件のスクリプトでは接続数が半分となってしまっていたわけです。

というわけで、無い脳みそをフル回転させて2時間くらいで書き直しました。 カッコワルかったカウンタのところと書き出し部も書き直し。 ついでにnetstat -6もsnmpipv6に変更。

  • porcon.sh
#!/bin/bash
walk=(`snmpwalk -v 1 -c public localhost tcpConnectionState.ipv6 |grep $1|awk '{if($4=="established(5)"){cnt++}print cnt}'`)

if [ -z $2 ];then
        clver="v3"
else
        clver="v2"
fi
wcnum=`echo ${walk[@]} |wc --words`
if [ $wcnum == "0" ];then
        typenum=0
elif [ $clver == "v2" ];then
        typenum=$wcnum
else
        typenum=`expr $wcnum / 2`
fi
echo $typenum
echo $typenum

v2かどうかはポート番号に続けて何かの文字をいれる(2か3しかないので手抜き)だけ。

$ ./portcon.sh 19028 v2
3
3

てな感じになります。

あと、JavaJRE1.6.0から付属されるようになったデバッグ支援ツール*1でキャッシュサイズに依存しないメモリ使用量とかが調べられないか見てるんですが、さっぱりわかりません('A`)
これが分かれば今よりも詳細な状況判断ができて便利だとおもうだけどねぇ…