我想在我的ruby代码中ping一个站点,并看到net-ping是一个很好的库。不幸的是,当我尝试使用gem install net-ping时出现以下错误:
经过进一步的研究,我发现net-ping还没有1.9.X.有没有人有一段很好的代码,他们愿意分享这些代码。C:> gem install net-ping
错误:安装net-ping时出错:
win32-open3需要Ruby版本< 1.9.0。
答案 0 :(得分:14)
如果“网站”是指网站,那么我就不会使用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
答案 1 :(得分:12)
您可以随时执行此操作并使用正则表达式来解析结果或只检查退出状态:
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;如果发生错误,则为其他值(来自
<sysexits.h>
)。
答案 2 :(得分:2)
对于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?
答案 3 :(得分:1)
使用source
gem "net-ping", :git => 'git://github.com/djberg96/net-ping.git'
# bundle install
现在你可以在1.9.2
中使用它的功能了