ADSLモデムの監視
プロバイダに連絡したところ、何とかつながるようにはなったが、元のリンク速度よりはるかに遅い。調べると、ADSLにはビットマップモードというのがあり、それをFBMというのに変更している。これだと、回線が安定するかわりに、速度が低下するらしい。
さらにネットで調べると、現在回線事業者からレンタルしている富士通製のADSLモデムは故障が多く、FBMモードでもしばしばリンクダウンになってしまうとのこと。
そこで、しばらく様子を見るために、ADSLモデムのリンク状況を監視することにした。
モデムにはWeb管理画面がついているので、ここにリクエストを飛ばしてHTMLを解析する。
ソースは以下。
#!/bin/ruby # vim:ts=4:ai: require 'rubygems' require 'hpricot' require 'kconv' require 'net/http' class ADSLStatus < Array def initialize self.push Time.now.strftime('%Y-%m-%d %H:%M:%S') end def csv self.join(',') end end Net::HTTP.version_1_2 req = Net::HTTP::Get.new('/sum/LineCondition.html?31400,0,0,0,0,0,0,0,0') req.basic_auth 'admin', 'admin' while true Net::HTTP.start('192.168.0.1', 80) do |http| res = http.request(req) doc = Hpricot(res.body) datum = ADSLStatus.new doc.search("//font[@class=plain]").each do |e| inn = e.inner_html.gsub(/\ /,' ') inn = '' if inn.nil? inn = inn.gsub(/\s+/, ' ').gsub(/(^\s|\s$)/, '').tosjis datum.push(inn) end puts datum.csv end sleep 60 end
1分ごとに192.168.0.1のモデムにアクセスし、回線状況をCSV出力する。
Rubyは久しぶりなので、効率的ではなさそうだが、動けばいいのでこれでよしとした。
出力結果は以下。
2008-08-24 16:03:20,ADSLリンクアップ (G.DMT FBM FDM),Interleave,G.DMT,FBM,1760 k
bps,256 kbps,13.5 dB,-,8 msec,8 msec,37 dB,14 dB,0,45356,2,6869,0,2511,510823,36
0613,約 0.62 Km