我试过用
Ping.pingecho("10.102.52.42", 30)
Run Code Online (Sandbox Code Playgroud)
用于远程主机的可达性.即使我能够手动ping ip,此语句也会返回null.是否有任何有效的方法来确定远程机器在ruby中的可达性.
atm*_*osx 34
我使用net-ping你需要安装的gem.然后代码很简单:
#!/usr/bin/env ruby
require 'net/ping'
def up?(host)
check = Net::Ping::External.new(host)
check.ping?
end
chost = '10.0.0.1'
puts up?(chost) # prints "true" if ping replies
Run Code Online (Sandbox Code Playgroud)
如果您使用的是 *nix 机器(OSX/Linux/BSD...),您始终可以告诉 Ruby(通过使用反引号)使用命令行并保存结果。
x = `ping -c 1 10.102.52.42`
# do whatever with X
Run Code Online (Sandbox Code Playgroud)
该-c 1参数告诉它运行一次。您可以将其设置为您认为合适的任何数字。如果您不设置-c,它将运行直到被中断,这将导致您的程序停止。