2011-03-08

rubyでipアドレスやらサブネットマスクやらの書式チェックをする

このエントリーをブックマークに追加 このエントリーを含むはてなブックマーク
rubyでipアドレスやサブネットマスクの書式をチェックをするならば正規表現を使うのが普通な気配なのですが、なんとなくめんどっちい感じの正規表現になるようです。

なので以下のような手段でチェックしてみました。

https://github.com/bluemonk/ipaddress
のipaddressというのを利用します。

インストールは
gem install ipaddress
でOKです。

以下のような感じでチェックして見ました。
require 'ipaddress'

#IPアドレスチェック
def check_ip
  begin
    IPAddress::IPv4.new ip
  rescue
    return false
  end
  true
end

#サブネットマスクチェック
def check_mask
  begin
    IPAddress::IPv4.new "10.0.0.1/#{mask}"
  rescue
    return false
  end
  true
end

#MACアドレスチェック
#これは正規表現を使っています
def check_mac
  if /^([0-9A-F]{2}:){5}[0-9A-F]{2}$/ =~ mac.upcase
    true
  else
    false
  end
end

#ブロードキャストアドレス取得
def get_broadcast(ip,mask)
  ipa = IPAddress::IPv4.new "#{ip}/#{mask}"
  ipa.broadcast.address
end

ブロードキャストアドレス取得以外は、rubyで普通に使えるipaddrでも似たようなことはできるような木はします。

コメントを投稿