接続人数のスクリプト 更新しました
前の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もsnmpのipv6に変更。
- 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`)
これが分かれば今よりも詳細な状況判断ができて便利だとおもうだけどねぇ…