【RaspberryPi】【Ruby】【nokogiri】【Aterm】無線LANルータ Atermの通信情報ログを取得するスクリプト

Rubyの勉強を兼ねて作成したスクリプト

我が家の無線LANルータ「Aterm」には一応通信ログ機能がある。

たまに見たいなっと思うときがあるのだが、Atermのログを見るためにいちいち保守設定画面の「クイック設定Web」にアクセスしてログを取得するのも面倒くさい。

そこで、Unix系OSやRubyの勉強を兼ねてRaspberryPiからRubyで実行するスクリプトを作成した。

Atermの通信ログはURL的には、

http://AtermのIPアドレス/index.cgi/log_main/syslog_common_c.log

にアクセスすると取得できる。

ということで、以下のスクリプト(GetAtermLog.rb)を作成

仕様としてはこんな感じだ。

  1. open-uriを利用してBesic認証でAtermの通信ログのURLへアクセスしデータを取得する。
  2. 単純にデータを取得しただけだと文字化けするので、kconvを使ってUTF-8に変換する。
  3. UTF-8に変換した後、<pre>タグの中あるログの内容を取得する。なお、タグの中を取得するためにnokogiriを利用している。

#! /usr/bin/env ruby

require ‘open-uri’
require ‘kconv’
require ‘nokogiri’

user = ‘admin’
pass = ‘ほげほげ’
url  = ‘http://AtermのIPアドレス/index.cgi/log_main/syslog_common_c.log’

result = open(url, :http_basic_authentication => [user,pass]).read

#puts result
#puts Kconv.toutf8(result)

doc1 = Kconv.toutf8(result)
doc2 = Nokogiri::HTML.parse(doc1 , nil, nil)

doc2.css("pre").each do |pre|
  puts pre.text
end

このスクリプトを実行するとこんな結果がでる。

$ ruby GetAtermLog.rb

2013-12-10 22:48:14 iface – 1.ntc: link down, LAN
2013-12-10 22:48:17 iface – 0.ntc: link up, LAN
2013-12-10 22:48:19 iface – 1.ntc: link down, WAN
2013-12-10 22:48:21 iface – 0.ntc: link up, WAN
2013-12-10 22:48:22 wless -25.ntc: channel:36  aAPs:0  nAPs:0 acAPs:0  max normalized rssi:0

なお、RaspberryPi上の環境では、nokogiriを利用するために

gem install nokogiri

を実行し、nokogiriをインストールしている。

これは時間がかかった。

コメント

タイトルとURLをコピーしました