2016-03-20 6 views
0

Ich versuche, herauszufinden, wie das net/ping Juwel zu verwenden, und ich habe ein paar Fragen, da ich habe es mit:Ruby-net-ping Nutzung Verwirrung

  • Warum benötigen Sie Administratorrechte auf run ICMP
  • Gibt es wahr oder falsch zurück? Zum Beispiel:

    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 
    

Ich bin verwirrt und ich kann nichts auf Google scheinen im Zusammenhang zu finden, wie es funktioniert: https://www.google.com/search?safe=off&btnG=Search&q=ruby+net%3A%3Aping%3A%3Aicmp+tutorial

Wenn mir jemand helfen könnte es würde sehr geschätzt werden, danke

Antwort

1

Dies ist, wie Rubin evals if:

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

Ergebnis der Übereinstimmung true ist nil und if nil ist falsch. Ihr zweites Beispiel wird also immer "wahr" ausgeben (auch wenn .ping?false ist).

Und "Administratorrechte": Sie können ICMP-Paket nicht als normaler Benutzer erstellen. Es sei denn, Sie verwenden /bin/ping, die SUID ist. (die net/ping Edelstein nicht verwenden). `.

+0

Das ist großartig und alles, aber das ist nicht das, was ich gefragt habe – 13aal