ruby ping for 1.9.1
我想在我的ruby代码中ping一个站点,看到net-ping是一个很好的库。 不幸的是,当我尝试gem安装net-ping时,我收到以下错误:
C:> gem install net-ping
错误:安装net-ping时出错:
win32-open3要求Ruby版本<1.9.0。
经过进一步的研究,我发现net-ping还没有1.9.X. 有没有人有一个很好的代码,他们愿意分享。
您始终可以执行此操作并使用正则表达式来解析结果或只检查退出状态:
ping_count = 10 server = "www.google.com" result = `ping -q -c #{ping_count} #{server}` if ($?.exitstatus == 0) do puts "Device is up!" end
Ping可以检查的返回值:
如果从指定主机听到至少一个响应,ping实用程序将返回零退出状态; 如果传输成功但没有收到回复,则为2; 如果发生错误,则
另一个值(来自
)。
如果“网站”是指网站,那么我就不会使用ping。 Ping会告诉您主机是否已启动(除非路由器或防火墙阻止ICMP),但它不会告诉您Web服务器或Web应用程序是否正常响应。
如果是这种情况,我建议使用标准库或任何其他HTTP库中的Net :: HTTP。 一种方法是:
def up?(site) Net::HTTP.new(site).head('/').kind_of? Net::HTTPOK end up? 'www.google.com' #=> true
对于Windows,请遵循以下说明:
download djberg96-net-ping-net-ping-1.5.3-0-g9252076.zip from github.com/djberg96/net-ping unzip, cd in the folder gem build net-ping.gemspec gem install net-ping-1.5.3-universal-mingw32.gem gem install win32-security
使用它:
require 'net/ping' p Net::Ping::TCP.new('www.google.com', 'http').ping? p Net::Ping::TCP.new('foo.bar.baz').ping?
从源头使用
gem "net-ping", :git => 'git://github.com/djberg96/net-ping.git' # bundle install
现在你可以在1.9.2中使用它的function了