2016-03-20 6 views
0

私はnet/ping宝石を使用する方法を把握しようとしていると私はそれを使用してきたので、私は質問のカップルを持っている:ルビーネットのpingの使用混乱

  • あなたはに管理者権限が必要な理由実行ICMP
  • trueまたはfalseを返しますか?たとえば、次のように

    Net::Ping::ICMP.new("127.0.0.1").ping?# <= true 
    
    #So I could do something like this: 
    ping = Net::Ping::ICMP.new("127.0.0.1") 
    if ping == true 
        puts "true" 
    else 
        puts "This shouldn't run" 
    end 
    #<= true 
    
    #or does it return packets received? 
    #so I could do something like this: 
    
    ping = Net::Ping::ICMP.new("127.0.0.1")ping? 
    if ping =~ /Received = 1/ 
        puts "true" 
    else 
        puts "This shouldn't run" 
    end 
    #<= true 
    

私は混乱していると私はそれがどのように動作するかに関するGoogleで何かを見つけるように見えることはできません。誰かが私を助けることができればhttps://www.google.com/search?safe=off&btnG=Search&q=ruby+net%3A%3Aping%3A%3Aicmp+tutorial

それは非常に高く評価されるだろう、これはあなた

答えて

1

に感謝どのようにルビー試用版とそのif

irb> ping = true 
=> true 
irb > ping =~ /Received = 1/ 
=> nil 
irb> nil ? "NIL is true" : "NIL is not true" 
=> "NIL is not true" 

一致結果truenilであり、はfalseです。したがって、2番目の例では、常に.ping?falseになる場合でも、「true」が出力されます。

「管理者権限」:通常のユーザーとしてICMPパケットを作成することはできません。 SUIDの/bin/pingを使用しない限り。 (net/ping宝石は使用していません)。 `。

+0

これは素晴らしいことですが、それ以外は私が尋ねたものではありません – 13aal