2012-04-02 7 views
2

私は現在、Ruby on Railsで作成されたDashboardアプリケーションを作成しています。Railsを使用してサーバにpingしてステータスを表示

私はPing用にサーバーモデルとコントローラを追加しました。

私が望むのは、指定されたサーバーのIPアドレスでpingコマンドを実行することです。

私はこれについてどうやって結果(ステータスとM/S)をデータベースに記録しますか?

毎分コマンドを実行する方法も知りたいと思います。

+0

これを実行したレーキタスクを作成して毎分実行するようにしたいと思うのですが、もっと細かいことは分かりません。 –

答えて

11

おそらく最も簡単な方法は、TCPソケットを開くには、次のようになります。

require 'timeout' 
require 'socket' 

def ping(host) 
    begin 
    Timeout.timeout(5) do 
     s = TCPSocket.new(host, 'echo') 
     s.close 
     return true 
    end 
    rescue Errno::ECONNREFUSED 
    return true 
    rescue Timeout::Error, Errno::ENETUNREACH, Errno::EHOSTUNREACH 
    return false 
    end 
end 

ping('109.104.109.237') 

これらの用途のTCPピングではなく、ICMPので、ファイアウォールが適切に設定する必要があります。

loop do 
    # do your ping tests 
    sleep 60 
end 

、そのプロセスのすべての時間を実行している:毎分のようなものを使用して達成することができ、これを実行する

。バックグラウンドを簡単にするには、Daemons(http://daemons.rubyforge.org/)のようなものを見ることができます。

+1

編集者があなたの回答に変更を提案しました。編集履歴を見て、気分が合うように行動してください。 –

関連する問題