Stay at Stream
とりあえずブログ2nd 080207開設
[43] [42] [41] [40] [39] [38] [37] [36]
Heuristically programmed ALgorithmic computer type 9000
"そうだ、珈琲飲もう。ちょうど朝淹れたのの残りがあったはずだ"
"カップに注いでレンジ3分、、と"
{3分後}
"今レンジの音がしたような?気のせいか。"
"あー、そうだ珈琲飲もう。、、、あれ、カップがない。"
アーサ・C・クラーク の 2001:a space odyssey を読んでる。そろそろ終わる。
映画も見たこと無いけど、原作は読んどこうと思って読んでる。でも前置きな解説を読む限りだと、映画も小説も原作らしい。ある種メディアミックス的なものようぬ、1971年にメディアミックスという考え方があったかどうかは知らないけどね。
んで、読んでてとりあえずイライラしたとこ一点。なんで、誰もHAL9000の気持ちを考えてあげない。あの船に一人でもIT系技術者、、、多分あの本だと「コンピュータ専門技師」とか書かれるのかな、が乗ってればあんな惨劇にはならなかったはずだと思う。"9000型コンピュータ萌え~”とか、そういうある意味人間としては終わりかけちゃってる人がいても良かったと思う。 まぁそのかわり、話の根底とか全部崩れるけどね。
ついでに言っておけば、HALという名前も可哀想すぎだ。International Business Machinesとか、当時は調子乗りすぎだったんじゃね?とか、、巷の中国人がインタビューに答えるっぽく言ってみる。
"カップに注いでレンジ3分、、と"
{3分後}
"今レンジの音がしたような?気のせいか。"
"あー、そうだ珈琲飲もう。、、、あれ、カップがない。"
アーサ・C・クラーク の 2001:a space odyssey を読んでる。そろそろ終わる。
映画も見たこと無いけど、原作は読んどこうと思って読んでる。でも前置きな解説を読む限りだと、映画も小説も原作らしい。ある種メディアミックス的なものようぬ、1971年にメディアミックスという考え方があったかどうかは知らないけどね。
んで、読んでてとりあえずイライラしたとこ一点。なんで、誰もHAL9000の気持ちを考えてあげない。あの船に一人でもIT系技術者、、、多分あの本だと「コンピュータ専門技師」とか書かれるのかな、が乗ってればあんな惨劇にはならなかったはずだと思う。"9000型コンピュータ萌え~”とか、そういうある意味人間としては終わりかけちゃってる人がいても良かったと思う。 まぁそのかわり、話の根底とか全部崩れるけどね。
ついでに言っておけば、HALという名前も可哀想すぎだ。International Business Machinesとか、当時は調子乗りすぎだったんじゃね?とか、、巷の中国人がインタビューに答えるっぽく言ってみる。
昨今、うちで実装してた「IPアドレス通知スクリプト」が不調になった。自宅サーバを持っているが、社内の人とかx3 が恐くてドメインは持てない。
そこでIPアドレス直打ちによるアクセスになるわけだけど、PPPoEによるプロバイダとの接続(一般的な家庭用インターネット環境)なため使用するグローバルIPアドレスはプロバイダからDHCPによって割り当てられることになる。通常ルータとかで繋ぎっぱなしにすればアドレスは変わらないようだけど、それが保証されているわけじゃない。向こうの都合とかでDHCP再起動とかしても全然いいわけで、結局いつIPアドレスが変わるのか今何使ってるのかはその都度調べないとわからない。
そんなところで、使ってたのがグローバルIPを通知してくれるWEBサイト。リンクのページだと、いかにもコマンドとかぬかしてるが、おもいっきりwgetしてるだけだったりする。つまりwgetしてる先のwebページはhttp要求のヘッダからアクセス元情報をそのまま返してるだけのCGI、、、だと思う。どちらにせよ、外の自分が持たないwebページ頼みになる。
んで最近そのページ、正確にはwebサーバだと思うが一時アクセス出来ない状態になっていた。ということはつまりそれを使ってた通知用スクリプトも不調となったわけ。現在は復旧してるらしいけど、何時までも不安定なソースは使えないということで、前々から考えてたルータからSNMPでデータ抜いてくるという方法に切り替えてみた。
まずはルータの設定、使用ルータはお馴染み{YAMAHA RTX1000}、、(最近1100いいなとか思う。ヘブォッッ)
基本的にSNMPに必要なのは最初の1行だけ、アクセスを許可するホストとコミュニティ名を設定する。
ただし、今回欲しいのはpppoe接続で使うグローバルIPアドレス。そのため2行目の設定でpp接続の情報を取得できるようにする(RTXではpppoe接続はppを割り当てて作るからね)。これでIPが引っ張れるかと思いきや、これだけで取得できるIPアドレスの情報は ’ipcp’ な感じになってしまう。これは使用しているpppoeが接続を作る際に対向先から使用するIPを割り当てられる使用になっていて、その設定がされているという意味。で3行目、そんな仕様のpp接続でも、そういう部分を今使ってるIPアドレスに強制的に変換して出力するようにする設定となる。
これでルータから使ってるグローバルIPアドレスは採れるようになったはず、んで情報をくれそうなMIBだが分かるわけがない。ググっても出てこなさそうだし、公式にはmibファイルくらいしかなさそうだし。ということでsnmpwalk で片っ端から全部リストして今のグローバルIPアドレスで引っかかるやつを探すというお約束の手段を使用。結果以下のコマンドでIPアドレスが引っ張れそうだと判明した。
この ipAdEntAddr てのは機器にエントリされたIP情報のIPv4アドレスをくれるMIBらしい。(ってなんで調べて出てくるのがciscoのページだけ。)ということでたまたま最初のエントリが今回は pp(1) に割り当てられたIPアドレス、つまりグローバルIPアドレスとなったワケ。よって snmpgetnext をつかって最初のエントリだけ、さらに -Ov オプションで得られた結果のみを出力するという具合。
そういうことで、このエントリで snmpwalk すると pp(1) に割り当てられたIPアドレスと、LAN1に割り当てたプライベートIPアドレスが出てくる。多分LAN2も作ってアドレス割り当てるとこの下に出てくるんだと思う。
(ん、、でも今思えばエントリの名前そのものにIPアドレスが使われてたな、、その名前順で出てくるのだとしたら、グローバルIPアドレスの第1オクテットが192を超えた瞬間にこの方法だめじゃん、、とか今思った)
さて、次々。んではこれを使ってIPアドレスを通知してくれるスクリプトを作ろうということ。以前作った仕掛けをほぼそのまま使って下のような感じにしてみた。
見ればわかるから、スクリプトの解説とか要らないよね?アドレスをファイルに保存して以前と変わってれば通知。つまり最後にechoしてるところでメールとかしてあげるといい感じ。んでこれをcronに10分置きくらいで走らせるようにしてやれば実装完了と。
とりあえず、問題なさそう。と思ったらナカハラに見づらいって言われた。ということでIPアドレス部分のサニタイズとかしますか。(サニタイズって程で厳密でもないかな)
え?SNMPがわかりませんて?ググレカs(ry ヨドバシで1万円代くらいで買えるルータ使ってる人とかは知りません。アーアー聞こえなーい。
そこでIPアドレス直打ちによるアクセスになるわけだけど、PPPoEによるプロバイダとの接続(一般的な家庭用インターネット環境)なため使用するグローバルIPアドレスはプロバイダからDHCPによって割り当てられることになる。通常ルータとかで繋ぎっぱなしにすればアドレスは変わらないようだけど、それが保証されているわけじゃない。向こうの都合とかでDHCP再起動とかしても全然いいわけで、結局いつIPアドレスが変わるのか今何使ってるのかはその都度調べないとわからない。
そんなところで、使ってたのがグローバルIPを通知してくれるWEBサイト。リンクのページだと、いかにもコマンドとかぬかしてるが、おもいっきりwgetしてるだけだったりする。つまりwgetしてる先のwebページはhttp要求のヘッダからアクセス元情報をそのまま返してるだけのCGI、、、だと思う。どちらにせよ、外の自分が持たないwebページ頼みになる。
んで最近そのページ、正確にはwebサーバだと思うが一時アクセス出来ない状態になっていた。ということはつまりそれを使ってた通知用スクリプトも不調となったわけ。現在は復旧してるらしいけど、何時までも不安定なソースは使えないということで、前々から考えてたルータからSNMPでデータ抜いてくるという方法に切り替えてみた。
まずはルータの設定、使用ルータはお馴染み{YAMAHA RTX1000}、、(最近1100いいなとか思う。ヘブォッッ)
snmp host <許可ホスト> <コミュニティ名>
snmp yrifppdisplayatmib2 on
snmp display ipcp force on
snmp yrifppdisplayatmib2 on
snmp display ipcp force on
基本的にSNMPに必要なのは最初の1行だけ、アクセスを許可するホストとコミュニティ名を設定する。
ただし、今回欲しいのはpppoe接続で使うグローバルIPアドレス。そのため2行目の設定でpp接続の情報を取得できるようにする(RTXではpppoe接続はppを割り当てて作るからね)。これでIPが引っ張れるかと思いきや、これだけで取得できるIPアドレスの情報は ’ipcp’ な感じになってしまう。これは使用しているpppoeが接続を作る際に対向先から使用するIPを割り当てられる使用になっていて、その設定がされているという意味。で3行目、そんな仕様のpp接続でも、そういう部分を今使ってるIPアドレスに強制的に変換して出力するようにする設定となる。
これでルータから使ってるグローバルIPアドレスは採れるようになったはず、んで情報をくれそうなMIBだが分かるわけがない。ググっても出てこなさそうだし、公式にはmibファイルくらいしかなさそうだし。ということでsnmpwalk で片っ端から全部リストして今のグローバルIPアドレスで引っかかるやつを探すというお約束の手段を使用。結果以下のコマンドでIPアドレスが引っ張れそうだと判明した。
$ snmpgetnext -v 1 -Ov -c <コミュニティ名> <ルータのアドレス> ipAdEntAddr
この ipAdEntAddr てのは機器にエントリされたIP情報のIPv4アドレスをくれるMIBらしい。(ってなんで調べて出てくるのがciscoのページだけ。)ということでたまたま最初のエントリが今回は pp(1) に割り当てられたIPアドレス、つまりグローバルIPアドレスとなったワケ。よって snmpgetnext をつかって最初のエントリだけ、さらに -Ov オプションで得られた結果のみを出力するという具合。
そういうことで、このエントリで snmpwalk すると pp(1) に割り当てられたIPアドレスと、LAN1に割り当てたプライベートIPアドレスが出てくる。多分LAN2も作ってアドレス割り当てるとこの下に出てくるんだと思う。
(ん、、でも今思えばエントリの名前そのものにIPアドレスが使われてたな、、その名前順で出てくるのだとしたら、グローバルIPアドレスの第1オクテットが192を超えた瞬間にこの方法だめじゃん、、とか今思った)
さて、次々。んではこれを使ってIPアドレスを通知してくれるスクリプトを作ろうということ。以前作った仕掛けをほぼそのまま使って下のような感じにしてみた。
#!/bin/sh
PATH=/bin:/usr/bin
PREFIX=/usr/local/lib
AD_FILE=$PREFIX/NowAddress
PID=/tmp/chip.pid
if [ -f "$PID" ];then exit 1;fi
touch $PID
if [ ! -f "$AD_FILE" ];then
touch $AD_FILE
fi
ADDRESS=`cat $AD_FILE`
RESULT=0
snmpgetnext -v 1 -Ov -c <コミュニティ名> <ルータのアドレス> ipAdEntAddr > $AD_FILE
RESULT=$?
if [ $RESULT != 0 ];then
echo $ADDRESS > $AD_FILE
exit 1
fi
if [ "`cat $AD_FILE`" != "$ADDRESS" ];then
ADDRESS=`cat $AD_FILE`
echo "address change to $ADDRESS"
fi
rm $PID
PATH=/bin:/usr/bin
PREFIX=/usr/local/lib
AD_FILE=$PREFIX/NowAddress
PID=/tmp/chip.pid
if [ -f "$PID" ];then exit 1;fi
touch $PID
if [ ! -f "$AD_FILE" ];then
touch $AD_FILE
fi
ADDRESS=`cat $AD_FILE`
RESULT=0
snmpgetnext -v 1 -Ov -c <コミュニティ名> <ルータのアドレス> ipAdEntAddr > $AD_FILE
RESULT=$?
if [ $RESULT != 0 ];then
echo $ADDRESS > $AD_FILE
exit 1
fi
if [ "`cat $AD_FILE`" != "$ADDRESS" ];then
ADDRESS=`cat $AD_FILE`
echo "address change to $ADDRESS"
fi
rm $PID
見ればわかるから、スクリプトの解説とか要らないよね?アドレスをファイルに保存して以前と変わってれば通知。つまり最後にechoしてるところでメールとかしてあげるといい感じ。んでこれをcronに10分置きくらいで走らせるようにしてやれば実装完了と。
とりあえず、問題なさそう。と思ったらナカハラに見づらいって言われた。ということでIPアドレス部分のサニタイズとかしますか。(サニタイズって程で厳密でもないかな)
え?SNMPがわかりませんて?ググレカs(ry ヨドバシで1万円代くらいで買えるルータ使ってる人とかは知りません。アーアー聞こえなーい。
PR
この記事にコメントする
カレンダー
04 | 2025/05 | 06 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
最新記事
(01/29)
(03/22)
(11/03)
(08/08)
(06/29)
プロフィール
HN:
INCLUDE17
性別:
非公開
アクセス解析