短いですが、前回の続き。
前回、 MRTG でグラフ化するデータを取得するために SNMP のパッケージも入れました。
インストールすだけで起動しているので見てみます。
$ netstat -lun Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 127.0.0.1:161 0.0.0.0:*
このように UDP 127.0.0.1 で待機しています。
サーバ内部で使用する場合はこれでも良いのですが 別のサーバからも SNMP にアクセスすることを 考えて設定を変更します。
SNMP の設定ファイルを編集します。
$ sudo vi /etc/snmp/snmpd.conf
これを。
# Listen for connections from the local system only agentAddress udp:127.0.0.1:161
こうします。
# Listen for connections from the local system only agentAddress udp:161
あとはサービスを再起動。
$ sudo /etc/init.d/snmpd restart
これで別サーバからもアクセスできるようになりました。
$ netstat -lun Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State udp 0 0 0.0.0.0:161 0.0.0.0:*
今回はここまで。
ちょっと MRTG の復習がてら Raspberry Pi に MRTG を入れてみたいと思います。
とりあえずパッケージを最新の状態に。
$ sudo apt-get update
ちなみに 2014-01-07-wheezy-raspbian が入っています。
$ sudo apt-get upgrade
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following packages have been kept back:
wolfram-engine
The following packages will be upgraded:
curl dpkg dpkg-dev file libcurl3 libcurl3-gnutls libdpkg-perl libgnutls26 libmagic1 libxfont1 libyaml-0-2
lsb-base python3-pifacedigital-scratch-handler tzdata udisks wget
16 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.
Need to get 8,296 kB of archives.
After this operation, 570 kB of additional disk space will be used.
Do you want to continue [Y/n]?
インストール前後のパッケージのリストも取得しておきます。
$ sudo dpkg -l > ~/package_list_before_mrtg.txt
MRTG と SNMP のデーモンとクライアントを入れます。
$ sudo apt-get install snmpd snmp mrtg
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
libio-socket-inet6-perl libperl5.14 libsensors4 libsnmp-base libsnmp-session-perl libsnmp15
libsocket6-perl
Suggested packages:
lm-sensors snmp-mibs-downloader mrtg-contrib
The following NEW packages will be installed:
libio-socket-inet6-perl libperl5.14 libsensors4 libsnmp-base libsnmp-session-perl libsnmp15
libsocket6-perl mrtg snmp snmpd
0 upgraded, 10 newly installed, 0 to remove and 1 not upgraded.
Need to get 5,863 kB of archives.
After this operation, 9,507 kB of additional disk space will be used.
Do you want to continue [Y/n]?
途中で "Make /etc/mrtg.cfg owned by and readable only by root?" とか聞かれるので "Yes" と答えておきます。
$ sudo dpkg -l > ~/package_list_after_mrtg.txt
インストール前後のパッケージの差分は次のような感じ。
$ cd $ diff package_list_after_mrtg.txt package_list_before_mrtg.txt 292d291 < ii libio-socket-inet6-perl 2.69-2 all object interface for AF_INET6 domain sockets 357d355 < ii libperl5.14 5.14.2-21+rpi2 armhf shared Perl library 403d400 < ii libsensors4:armhf 1:3.3.2-2+deb7u1 armhf library to read temperature/voltage/fan sensors 413,416d409 < ii libsnmp-base 5.4.3~dfsg-2.7 all SNMP (Simple Network Management Protocol) MIBs and documentation < ii libsnmp-session-perl 1.13-1 all Perl support for accessing SNMP-aware devices < ii libsnmp15 5.4.3~dfsg-2.7 armhf SNMP (Simple Network Management Protocol) library < ii libsocket6-perl 0.23-1 armhf Perl extensions for IPv6 549d541 < ii mrtg 2.17.4-2 armhf multi router traffic grapher 639,640d630 < ii snmp 5.4.3~dfsg-2.7 armhf SNMP (Simple Network Management Protocol) applications < ii snmpd 5.4.3~dfsg-2.7 armhf SNMP (Simple Network Management Protocol) agents
なんか色々と入りました。
今回はここまで。
久しぶりの Raspberry PI ネタです。
今回は raspbian を配布されている最新にしたいと思います。 というわけで、 2014-01-07-wheezy-raspbian を入れます。
[参考サイト]
Raspberry Pi メモ (26) まとめ - Jun's homepage
いつものように 上記サイトを参考に進めます。
ダウンロードして、解凍して、SDカードに書き込んで起動。
2013-12-20-wheezy-raspbian で Mathematica が入ってます。 適当にコマンドを実行。
$ mathematica -v
10.0
なんか出ました。
2013-09-25-wheezy-raspbian から Java が入ってます。
$ java -version
java version "1.7.0_40"
Java(TM) SE Runtime Environment (build 1.7.0_40-b43)
Java HotSpot(TM) Client VM (build 24.0-b56, mixed mode)
とりあえずここまで。
しばらく放っておくと追いかけるのが大変ですね。
bash には乱数を取得できる変数?が 用意されています。
$ echo $RANDOM 2036
繰り返し呼ぶと違う値が返ります。
$ echo $RANDOM 2036 $ echo $RANDOM 17653
man には次のようにあります。
RANDOM Each time this parameter is referenced, a random integer between 0 and 32767 is generated. The sequence of random numbers may be initialized by assigning a value to RANDOM. If RANDOM is unset, it loses its special properties, even if it is subsequently reset.
範囲は 0 〜 32767 のようです。
範囲を指定したい場合は、 % で余りを求めます。
$ echo $(($RANDOM % 10)) 7
printf で 0詰めにもできます。
$ VAL=`printf "%05d" $RANDOM` $ echo $VAL 02036
RANDOM に値を設定すると、乱数の種を決めることができます。
$ RANDOM=3 $ echo $RANDOM 17653 $ echo $RANDOM 12499 $ RANDOM=3 $ echo $RANDOM 17653 $ echo $RANDOM 12499
同じ種を指定すると、同じ値が返ってきます。
Invalid argument supplied for foreach()
この警告は、 PHP の foreach で、 配列として扱えないものを回そうとしたときに出ます。
実際あったのが SimpleXML を使っていて、 XPath の取得結果でした。
foreach($xml->xpath('xxxx') as $data) {}
この場合、XPath で取得できないと FALSE が返ってきます。 その結果、foreach で警告が出ます。
IE の showModalDialog で開いたウィンドウは、 先頭のリンクやフォームに、 自動的にフォーカスがセットされてしまいます。
ページが読み込まれたときに 下のようになります。
この状態で [Enter]キーを押すと、 当然このリンクをクリックしたことになってしまいます。 また、JavaScript で
window.scrollTo(0, xx);
のようなスクロール操作を行っても フォーカスがセットされたオブジェクトが 隠れるようなスクロールはさせてくれません。
対処方法の 1つとして、 次のように showModalDialog で開いたウィンドウの onload イベントで、 ウィンドウ全体にフォーカスを当て直します。
<script> if (window.attachEvent) { window.attachEvent("onload", function() { window.focus(); }); } </script> </body> </html>
IE 用の対策なので window.attachEvent を使用しています。
これで、フォーカスが解除されます。
今更ながら自作ツールの Windows8 での動作を確認しました。
VB の標準ライブラリと API しか使っていないので Windows8 でも問題なく動きました。 (もちろん Windows7 でも動きました)
このあたりの Windowsの互換性はスゴいですね。