/ruby-bulkping

Bulk ping sender for Ruby

Primary LanguageCOtherNOASSERTION

* BulkPing

  複数のホスト宛の ping をまとめて扱える Ruby エクステンションです。

* 動作環境

  今のところ Debian GNU/Linux (lenny) と Ruby 1.8.x の組み合わせ
  のみ動作を確認しています。

* インストール

   RubyGems を使います。
   
   # gem build bulkping-gemspec
   # gem install bulkping-0.1.1.gem

* リファレンス

  BulkPing::ICMP.new
    BulkPing::ICMP オブジェクトを生成します。

  BulkPing::ICMP#ping(targets)
    指定された targets に向けて ICMP echo リクエストを送信します。

    targets には対象 IP アドレスの配列を渡します。
    IP アドレスの記述方法には以下の 3 つがあります。

  - IP アドレス
     例: '192.168.0.1'
  - IP アドレス範囲
     例: '192.168.0.1-192.168.0.100'
  - ネットワーク
     例: '192.168.0.0/24'  

  BulkPing::ICMP#ping(targets) {|host, result| ... }
    ping を送信した各アドレスについて、アドレスと結果をブロックに適用します。

  BulkPing::ICMP#alive?(target)
    ping の結果、target から応答があったか否かを返します。

  BulkPing::ICMP#alive
    ping の結果、応答があったアドレスの配列を返します。

  BulkPing::ICMP#dead
    ping の結果、応答がなかったアドレスの配列を返します。

* サンプル

  require 'rubygems'
  require 'bulkping'

  bp = BulkPing::ICMP.new
  bp.ping('192.168.0.1', '192.168.0.2', '192.168.0.3', '192.168.0.4')

  if bp.alive?('192.168.0.1')
    puts "192.168.0.1 is alive"
  else
    puts "192.168.0.1 is dead"
  end

  puts "-- alive --"
  puts bp.alive
  puts "-- dead --"
  puts bp.dead

  bp.ping('192.168.0.1-192.168.0.100')
  puts "-- alive --"
  puts bp.alive

  bp.ping('192.168.0.0/24')
  puts "-- alive --"
  puts bp.alive

  bp.ping('192.168.0.1', '192.168.0.2', '192.168.0.3') do |addr, result|
    puts "addr=#{addr}, result=#{result}"
  end

* 実行例

  192.168.0.1 is alive
  -- alive --
  192.168.0.1
  -- dead --
  192.168.0.2
  192.168.0.3
  192.168.0.4
  -- alive --
  192.168.0.1
  -- alive --
  192.168.0.0
  192.168.0.1
  192.168.0.31
  192.168.0.51
  192.168.0.61
  192.168.0.62
  192.168.0.63
  192.168.0.64
  192.168.0.151
  192.168.0.161
  192.168.0.255
  addr=192.168.0.1, result=true
  addr=192.168.0.2, result=false
  addr=192.168.0.3, result=false

* ライセンス

  Copyright (c) 2010 Satoshi Ebisawa <ebisawa@gmail.com>
  All rights reserved.

  詳しくは付属の LICENSE ファイルを参照してください。