Ruby net-ping使用混乱
Ruby net-ping usage confusion
我正在尝试弄清楚如何使用 net/ping
gem,自从我使用它以来我有几个问题:
- 为什么您需要管理员权限才能 运行
ICMP
它 return 是对还是错?例如:
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
如果有人能帮助我,将不胜感激,谢谢
这就是 ruby 评估 if
:
的方式
irb> ping = true
=> true
irb > ping =~ /Received = 1/
=> nil
irb> nil ? "NIL is true" : "NIL is not true"
=> "NIL is not true"
匹配 true
的结果是 nil
,而 if nil
是假的。因此,您的第二个示例将始终输出 "true"(即使 .ping?
将是 false
)。
和'admin privileges':您不能以普通用户身份创建ICMP 数据包。除非你使用 /bin/ping
这是 SUID。 (net/ping
gem 不使用)。 `。
我正在尝试弄清楚如何使用 net/ping
gem,自从我使用它以来我有几个问题:
- 为什么您需要管理员权限才能 运行
ICMP
它 return 是对还是错?例如:
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
如果有人能帮助我,将不胜感激,谢谢
这就是 ruby 评估 if
:
irb> ping = true
=> true
irb > ping =~ /Received = 1/
=> nil
irb> nil ? "NIL is true" : "NIL is not true"
=> "NIL is not true"
匹配 true
的结果是 nil
,而 if nil
是假的。因此,您的第二个示例将始终输出 "true"(即使 .ping?
将是 false
)。
和'admin privileges':您不能以普通用户身份创建ICMP 数据包。除非你使用 /bin/ping
这是 SUID。 (net/ping
gem 不使用)。 `。