gpt4 book ai didi

ruby-on-rails - 使用 Rails Ping 服务器并显示状态

转载 作者:数据小太阳 更新时间:2023-10-29 08:16:01 25 4
gpt4 key购买 nike

我目前正在创建一个使用 Ruby on Rails 创建的仪表板应用。

我已经为 Ping 添加了一个服务器模型和 Controller 。

我想要的是在给定的服务器 IP 地址上运行 ping 命令。

我该如何处理并将结果(状态和 M/S)记录到数据库中?

我也想知道如何每分钟运行一次命令。

最佳答案

可能最简单的方法是打开一个 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 ping 而不是 ICMP,因此需要适当配置防火墙。

每分钟运行一次可以使用类似的东西来实现:

loop do
# do your ping tests
sleep 60
end

并一直运行该进程。如果您想要一种简单的后台运行方式,可以查看类似守护进程 (http://daemons.rubyforge.org/) 的内容。

关于ruby-on-rails - 使用 Rails Ping 服务器并显示状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9984294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com