рубиновый пинг для 1.9.1 - PullRequest
       1

рубиновый пинг для 1.9.1

12 голосов
/ 25 августа 2010

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

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

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

Ответы [ 4 ]

14 голосов
/ 25 августа 2010

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

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

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

up? 'www.google.com' #=> true
12 голосов
/ 25 августа 2010

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

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 голосов
/ 14 апреля 2012

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

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?
1 голос
/ 10 марта 2011

Использование из источника

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...