WiFiルータをWZR-HP-G300NHに更新
802.11nの距離性能の良さと、802.11g/a の分離/混在の製品が出ていることから、 Buffalo WZR-HP-G300NHに更新する。 お古になったルータは、以前からお古のゲームをくれる 親戚のお兄ちゃんにお返しの予定。
iフィルタのトラブル
設定の間にネットが切れると、いざトラブルに絡んだ検索ができなくなるので、 WANを繋がない状態でMACアドレスフィルタの情報や、基本設定を行う。 その後、ルータを切り替えるが、繋がらない。 WAN側のページを見ると、ルータ内臓のコンテンツフィルタの「iフィルタ」の設定画面 に強制的に飛ばされ、「iフィルタを使わない」を選ぶんだけど、設定が保存されない。
調べてみると、G300NHのDHCPから取得したアドレスで設定を行わないと、 正しくページ遷移ができないのが原因。 自宅LANは、自宅サーバのDHCPを使ったMACアドレス割り付けの固定アドレスを使っている。 さらに自宅内DNSサーバでホスト名を割り振っていて、G300NHのDHCPが吐くBuffalo.setupという ホスト名が分らなくなるのが原因。
ということで、
(/etc/bind/named.conf.options) options { : forwarders { // 202.127.80.1; プロバイダのDNSサーバ // 202.127.80.1; の設定を消す。 192.168.2.1; DNS問い合わせをルータに }; : };
MRTGでパケット流量を観測
自宅のネットワークは、SPAMやらネットワーク攻撃やらの動向の予知のために、 MRTGにてパケット流量を測定していた。 しかし、G300NHに更新し予想通り、パケット流量データがとれなくなった。 パケット流量を表示するページのURLを見ると、
http://192.168.11.1/cgi-bin/cgi ?req=frm&frm=packet.html&rand=xxxxxxxx
にて、URL末尾にセッションIDが付いており、簡単なスクリプトでは観測が困難と思われた。 しかし、パケット流量程度にセッションIDは要らないだろうと、試しにrand以下を抜いてみた。 すると予想どおりパケットデータが取り出せた。吐きだすHTMLを読むと、流量の行は、 『<div class="DIGIT">xxxxxx</div>』であった。 そこで、snmpから呼び出されるスクリプトを以下のように書き換えた。
(( /etc/snmp/airstation.sh )) #!/bin/bash /usr/bin/w3m -dump_source -no-proxy \ 'http://root:@192.168.11.1/cgi-bin/cgi ?req=frm&frm=packet.html' 2>&1 \ | /bin/sed -n '/class="DIGIT"/ s/^.*>\([0-9]*\)<\/div>.*$/\1/ p' /usr/bin/w3m -dump_source -no-proxy \ 'http://root:@192.168.11.1/cgi-bin/cgi ?req=twz&frm=logout.html' >/dev/null 2>&1 (( /etc/snmp/snmpd.conf )) extend .1.3.6.1.4.1.2021.50 airstation /etc/snmp/airstation.sh
これにより、airstation.sh にて、以下のような12行の数値が得られるようになる。
LAN有線送信正常 LAN有線送信エラー LAN有線受信正常 LAN有線受信エラー WAN有線送信正常 WAN有線送信エラー WAN有線受信正常 WAN有線受信エラー LAN無線(802.11g)送信正常 LAN無線(802.11g)送信エラー LAN無線(802.11g)受信正常 LAN無線(802.11g)受信エラー
Lightningのネットワーク上のカレンダ
スケジュールの管理は、最近は携帯やGoogle Calendarと同期できるようにしてあるので、便利なんだけど、チラホラと書き込んだはずのイベントが消えている。 よくよく考えていると、デスクトップとノートで同時にLightningを開いていて、 それぞれでスケジュールを追加する時に、書き込まれるタイミングによって 1つの.icsに別のタイミングで書き込まれることで、消えてしまうみたい。
時々、ファイルがロックされるのか、iCalがReadonly になるのも不便だけど、 無秩序に別々にLightningを起動するとこうなってしまうのね。 書き込み時にマージしてくれるといいんだろうけど…
ということで、自分なりのルールで、スケジュール追加の前後にマメに「更新」、 をするしかないな…
inetd経由の特別ポート番号でsshバックドア
出先から自宅サーバにアクセスするためのsshのバックドアを、 携帯からアクセス許可をしない限り拒絶するように設置する。 特設ポート番号でinetd経由で"sshd -i" を起動する様に設置したんだけど、 どうも接続が拒絶される。
/etc/hosts.allow にて、本来の22番ポートは、職場からの接続以外を拒絶するように してあるが、特設ポート用のallowが書いてあるんだけど、"sshd -i"にて起動する時にも 22番ポート用のallowを読んでいるみたい。 しかたがないので、iptables にてフィルタをかけるように設定し、 hosts.allow は"ssh: ALL: allow"にて設定する。
その前に、自宅ルータで特設ポートを以前に別サーバ宛のsshに使っていたので、 つながらないというオチもあったんだけど…
ECOポイント7000点
子供部屋のエアコンを購入して、今日は工事日だった。 保証書も揃ったことで、エコポイントの必要書類が揃った。
http://eco-points.jp/にて、 住所氏名購入店舗、製品番号、製造番号を入力し、申請書類を作成する。 これに、購入時のレシート(原本)と、製品保証書(コピー)を糊づけして、 郵送する。ただ、書類にはレシートと保証書コピーを、 重ならないように糊づけと書いてあるけど、 A4用紙になぜかB5サイズ印刷されて、 どこをどうやったら重ならない様に糊付けしろってんだよぉ~♪
ポイントの利用
ポイントは、カタログギフトや地域産品などにできるんだけど、 ひとまずJCB商品券に交換。 Edyなどの電子マネーにもできるみたいだけど、肝心の店で使えないと困るので、 商品券が無難だろう。
iCalendarをGoogle Calendarに転送
Net::Google::Calendarモジュールが便利そうだったので、 iCalendar(.ics)のファイルを Google Calendar にアップロードするプログラムを、 Perl で書いてみた。 今までは、Java で書かれたGCalDaemonを使っていたけど、カスタマイズもしづらかった。
繰り返しイベントについては、未対応のまま。 本当は同期させたいけど、Google側のEventのIDはURL形式で、iCal と互換性がない。 だから、アップロードの度に、一旦全イベントをチマチマ消しているのが、美しくない。 かといって、iCal と Google Calendar の ID の対応表をいちいち更新するのも面倒だし。
get_eventsとdelete_entryの使い方
# Google Calendar の登録情報 $url = 'http://www.google.com/' .'calendar/feeds/XXXX%40gmail.com/' .'private-XXXXXXXXXXX/basic' ; $user = 'XXXX@gmail.com'; $pass = 'PPPPPPPP'; $calname = Jcode->new( 'NNNN' )->utf8 ; my $cal = Net::Google::Calendar->new( url => $url ); # $cal->{_ua}->env_proxy; # (2) $cal->login($user, $pass) or die $@; # (3) # 指定されたカレンダーを選ぶ my $dest_cal ; foreach my $c ( $cal->get_calendars ) { $dest_cal = $c if ( $c->title eq '<カレンダーの名前>' ) ; } if ( $dest_cal ) { # 登録されていたイベントを全部消す $cal->set_calendar( $dest_cal ) ; my $start_index = 1 ; my $max_results = 20 ; my @ev ; while( 1 ) { # 指定件数しかイベントを返さないので少しづつ消す @ev = $cal->get_events( start-index => $start_index , max-results => $max_results ) ; last if ( @ev == 0 ) ; foreach my $e ( @ev ) { $cal->delete_entry( $e ) ; } $start_index += @ev ; } }
MT4iを入れてみた(google携帯用表示変換で十分?)
携帯からのMovableTypeの日記を見ると、 PC画面と同様のレイアウトをしようとするので、 表示が崩れ読みづらい。 そこで、MovableTypeの表示を携帯用に生成する、 MT4iを試してみる。 設定は、面倒だけど、読みやすい表示にはしてくれる。 しかし、既存のページから必要に応じてMT4iに飛ばすようにしたいんだけど、 既存日記のURLと、MT4iのURLは関連付けが極めて面倒。
MT4iには、携帯からPCページへのリンクがあると、 "http://www.google.co.jp/gwt/n?u="を経由することで、 それなりに読めるページに変換してくれる機能がついている。 実際、MovableTypeのページが携帯でそれなりに読むのが目的だし、 コメント書き込みはしないだろうし、 MT4iじゃなくても十分に思えてきた。
netatalkをインストール
Mac OS X の端末を試していることだし、 Mac のファイル共有 netatalk をインストール。
((インストール)) # aptitude install netatalk ((/etc/netatalk/AppleVolumes.default)) # サーバ文字コードがEUCなので... ~/ "($h) Home" \ maccharset:MAC_JAPANESE volcharset:EUC-JP /home/PATH/ "($h) Share" \ maccharset:MAC_JAPANESE volcharset:EUC-JP
しかし、Sambaでのアクセスができれば、 あえて AppleTalk を使えなくてもまるっきり支障がない。 当初は、TimeMachine の設定が簡単になるかと期待したけど、ディスクのイメージを 作って…といった手間は、あんまり変わらないみたい。
REGZA ZV500無償修理?
自宅に東芝液晶テレビの無償修理のメールが届く。
自宅に技術の人を派遣して無償で修理との内容であった。 しかし、2日後には、製品登録の照合をしたら、うちの液晶は 問題なしとの内容であった。 不具合も、ソフトウェアの不具合と 書いてあるし、ファームウェアアップデートで自動更新されるんじゃ…と思うのだが…
# ネットにつながっていない利用者向けなんだろうか…
WebDAVの微妙な設定トラブル
自宅サーバのデータをWebDAVで公開すべく、設定で起こったトラブルのメモ。
以前から一部でWebDAVを使っていて問題がでていなかったのに、 Windows マシンから、「ネットワークプレースの追加」によりWebフォルダとして アクセスしようとすると、「有効なフォルダがない」と表示されてしまう。
いろいろ調べると、フォルダ指定で末尾に"/"がついているか/付いていないかで、 動かなかったりする。
((webDAVの設定行のダメな例)) Alias /path/ /var/www/hoge/path/ <Location /path/> : </Location> ((ネットワークプレースのアドレス指定のダメな例)) http://www.example.com/path/ ★ともかく、フォルダ名の末尾に"/"をつけない!! ((webDAVの設定行の正しい例)) Alias /path /var/www/hoge/path <Location /path> : </Location> ((ネットワークプレースのアドレス指定の正しい例)) http://www.example.com/path
言い訳:ブラウザでは、"http://www.example.com/path"と書いてあると、 path がファイルなのかフォルダなのかは、アクセスしてみないとわからない。 だから一旦ファイルのつもりでアクセスして、サーバからの返答に応じて 再びフォルダとして2度目のアクセスを行う。 このため、他人にURLを知らせる場合、 "http://www.example.com/path/"で教える方が、2度目のアクセスが発生しないので、親切。
だから、この習慣に従って、設定ファイルの記述でpath 指定に"/"を付けてしまうことが多い。 実際、自分でファイルをアクセスするプログラムを作る時にも、 設定ファイルの設定値の末尾が"/"付きか無か、付いてたら"/"を消すとかいった処理を 面倒がらずに書くのが「本当のプログラマー」…といいながらよく忘れる…
proftpdをアンインストール
proftpd のバージョンをあげたら、ftpサーバは起動するものの、 接続が切れる。ログを見ると signal 11 が出ており、Webの記事でも、 本質的な設定問題がなになのかつかめない。
でも、その前に、最近 ftp を使っていない。 ファイルコピーは、もっぱら ssh , samba , web-dav ばっかりで、 使うことは無い。ということで、ばっさりとアンインストールする。