Подтвердить что ты не робот

Ruby ping для 1.9.1

Я хочу выполнить ping-сайт в моем ruby-коде и увидел, что net-ping - хорошая библиотека для этого. К сожалению, когда я попытался установить gem install net-ping, я получил следующую ошибку:

C: > gem install net-ping
ОШИБКА: Ошибка при установке net-ping:
        win32-open3 требует версию Ruby < 1.9.0.

после дальнейших исследований я обнаружил, что нет-пинг еще не доступен для 1.9.X. У кого-нибудь есть хороший кусок кода, который пинги, который они хотели бы разделить.

4b9b3361

Ответ 1

Вы всегда можете сделать это и использовать регулярные выражения для анализа результата или просто проверить статус выхода:

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 возвращает статус выхода из нуля, если хотя бы один ответ был услышан от указанного хоста; статус двух, если передача прошла успешно, но ответы не были получены; или другое значение (из <sysexits.h>), если произошла ошибка.

http://www.manpagez.com/man/8/ping

Ответ 2

Если по сайту вы имеете в виду веб-сайт, я бы не использовал пинг. Ping сообщит вам, если хост встал (если маршрутизатор или брандмауэр не блокирует ICMP), но он не скажет вам, правильно ли отвечает ваш веб-сервер или веб-приложение.

Если это так, я бы рекомендовал Net:: HTTP из стандартной библиотеки или любой другой библиотеки HTTP. Один из способов сделать это:

def up?(site)
  Net::HTTP.new(site).head('/').kind_of? Net::HTTPOK
end

up? 'www.google.com' #=> true

Ответ 3

Для окон следуйте этим инструкциям:

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?

Ответ 4

Используйте

gem "net-ping", :git => 'git://github.com/djberg96/net-ping.git'
# bundle install

Теперь вы можете использовать функции из него в 1.9.2