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)を作成
仕様としてはこんな感じだ。
-
open-uriを利用してBesic認証でAtermの通信ログのURLへアクセスしデータを取得する。
-
単純にデータを取得しただけだと文字化けするので、kconvを使ってUTF-8に変換する。
-
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をインストールしている。
これは時間がかかった。
コメント