![无需 ssh 登录的系统正常运行时间](https://linux22.com/image/213512/%E6%97%A0%E9%9C%80%20ssh%20%E7%99%BB%E5%BD%95%E7%9A%84%E7%B3%BB%E7%BB%9F%E6%AD%A3%E5%B8%B8%E8%BF%90%E8%A1%8C%E6%97%B6%E9%97%B4.png)
我有很多linux服务器我想检查正常运行时间但我必须登录每一个。是否可以检查linux服务器的运行时间无需ssh登录到它?
附言。我的发行版是 RHEL 7/8 和 OL 8。
答案1
如果您的服务器位于受信任的安全网络中,全部位于一个或几个网段中,那么安装旧rwhod
服务及其客户端(rwho
和ruptime
)也可能符合要求。在 Debian 中,这些服务仍然可以通过安装两个软件包(rwhod
和rwho
)来打包和安装,因此如果您的发行版提供了它并且它符合您的要求,那么它可能是最简单的解决方案。
RHEL 7(可能还有与之相关的发行版)将服务和客户端打包为一个rwho
包; RHEL 8 及更高版本似乎不再包含该软件包。
rwhod
每分钟发送一次广播数据包,列出登录用户和当前正常运行时间,并监听其他类似的广播;rwho
和命令将获取过去 11 分钟内广播的所有主机ruptime
收集的报告并输出报告。根据最后收到的报告列出登录每个广播主机的用户;列出每个报告主机的正常运行时间。rwhod
rwho
ruptime
答案2
只需创建一个“xinetd”服务,如下所示:
# cat /etc/xinetd.d/uptime
service uptime
{
port = 10200
disable = no
socket_type = stream
protocol = tcp
log_on_success += USERID
log_on_failure += USERID
server = /usr/bin/uptime
user = root
instances = UNLIMITED
wait = no
log_type = SYSLOG daemon debug
}
# service xinetd restart
# netstat -ant | grep 10200
tcp6 0 0 :::10200 :::* LISTEN
# telnet localhost 10200
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
08:59:39 up 23 days, 16:36, 1 user, load average: 0.00, 0.01, 0.05
答案3
如果您有很多服务器,并且我假设您不仅仅对正常运行时间感兴趣,那么正确的工具将在每个设备上加载 SNMP,并为它们的 snmptrap 响应设置一个监控站。这是主要玩家使用的。显示的所有方法都不会显示丢失的启动,但 SNMP 会显示。
答案4
聚会已经很晚了,但是(假设正常运行时间不是对您庞大的服务器群健康状况唯一感兴趣的事情)我建议使用适当的工具来完成这项工作。
考虑使用普罗米修斯,每隔 5 分钟从您的设备中抓取各种指标,包括正常运行时间等指标。
出色地。要查询机器的正常运行时间node_time() - node_boot_time()
(即以秒为单位的正常运行时间,请随意对不同的时间单位进行数学计算),但这本质上就是您所要求的。