Perl 如何知道系统是否已通电?

Perl 如何知道系统是否已通电?,perl,operating-system,boot,uptime,Perl,Operating System,Boot,Uptime,我正在写一个脚本,通过网络为系统供电。然后我需要在另一台主机上运行一些命令。如何知道系统是否已通电 我的编程语言是Perl,目标主机是RHEL5 是否有任何内核中断或网络引导信息表明系统已通电且操作系统已加载 [在另一个场景中]我也在想,万一我只是手动打开我的机器。确切地说它什么时候通电了。操作系统应该在什么时候完全启动以进行与网络相关的操作,例如在那里执行网络命令。如果系统使用DHCP,那么远程系统将如何搜索这台机器[我想可能是通过mac地址,但如果我错了] 如果我遗漏了任何信息,请随时问我。

我正在写一个脚本,通过网络为系统供电。然后我需要在另一台主机上运行一些命令。如何知道系统是否已通电

我的编程语言是Perl,目标主机是RHEL5

是否有任何内核中断或网络引导信息表明系统已通电且操作系统已加载

[在另一个场景中]我也在想,万一我只是手动打开我的机器。确切地说它什么时候通电了。操作系统应该在什么时候完全启动以进行与网络相关的操作,例如在那里执行网络命令。如果系统使用DHCP,那么远程系统将如何搜索这台机器[我想可能是通过mac地址,但如果我错了]

如果我遗漏了任何信息,请随时问我。如果您对简化任务有任何建议,请提出:)

塔克斯
imkin

嗯,我想说,当系统能够执行您对它提出的请求时,它就会启动。也就是说,sshd守护进程正在运行。这对于您的目的来说已经足够了(我假设-替代您真正需要的任何守护进程)

所以,我会发送通电信号,每隔15-30秒检查一次,看看是否可以连接。如果我无法在该机器的合理时间内(2分钟或5分钟或其他时间)连接,那么我会向IT支持团队发送警报。好吧,我会先把它发给我自己,只有当我调查了一些失败,发现它们都是合法的,我才会直接把它发给它


DHCP是一个不同的问题。您必须开始学习广播,或者在引导期间在该机器上有一个守护进程“呼叫总部”,以注册其当前IP地址。每次DHCP更新更改其IP地址时,它都必须“呼叫总部”。这显然更加复杂。如果可能的话,尽量避免在这样的服务器机器上使用DHCP。

我认为检查sshd听起来是个不错的方法


至于DHCP问题:如果另一台计算机在同一子网中,您可以使用MAC地址查找它。

如何向启动时运行的远程计算机添加一个脚本,让它告诉您何时准备就绪。

在重新启动的计算机上,您可以在crontab中安装一个脚本,并使用特殊的
@reboot
断言(请参见
man5crontab
)。该脚本可以向另一台机器发送某种通知,通知它现在已启动。

我喜欢系统打电话回家的想法。让它成为引导序列中的最后一件事(或者至少在您关心的服务之后),您就知道系统可以响应您随后的请求。为什么DHCP会更改IP地址?DHCP只是意味着计算机向网络请求一个地址,并不意味着地址会改变。修复地址的是路由器或任何对查询的回复。你所要做的就是告诉路由器给机器一个固定的IP地址。DHCP仅仅能改变IP地址。没有什么说它必须。我们必须以某种方式来处理这个问题——要么专门配置DHCP服务器,要么处理IP更改。直接使用IP地址通常不是一个好主意。