8

我正在编写一个通过网络启动系统的脚本。然后我需要在另一台主机上运行一些命令。如何知道系统是否已开机?

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

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

[在不同的情况下] 我也想知道如果我只是手动打开我的机器。确切地说是什么时候通电。以及操作系统应该何时完全启动以进行网络相关操作,例如在那里执行网络命令。如果系统在 DHCP 上怎么办,那么远程系统将如何搜索这台机器 [我猜这可能通过 mac 地址。但如果我错了]。

如果我错过了任何信息,请随时问我。如果您有任何建议可以使任务更轻松,请提出:)

谢谢伊姆金

4

4 回答 4

12

好吧,我会说当系统可以执行您提出的请求时系统已启动。也就是说,sshd 守护进程正在运行。这足以满足您的目的(我假设 - 替代您真正需要的任何守护程序)。

所以,我会发送开机信号,然后每 15-30 秒检查一次,看看我是否可以连接。如果我未能在该机器的合理时间内(2 分钟或 5 分钟或其他任何时间)连接,那么我会向 IT 支持团队发送警报。好吧,我会先把它发送给自己,只有在我调查了一些故障并发现它们都是合法的之后,我才会开始将它直接发送给 IT。

DHCP是一个不同的问题。您必须开始学习广播,或者在启动期间在该机器上安装一个守护进程“回拨”以注册其当前 IP 地址。每次 DHCP 更新更改其 IP 地址时,它都必须“回拨”。这显然更令人费解。如果可能,请尽量避免在此类服务器机器上使用 DHCP。

于 2008-10-11T14:16:30.453 回答
9

在重新启动的机器上,您可以在 crontab 中安装一个带有特殊@reboot断言的脚本(请参阅 参考资料man 5 crontab)。该脚本可以向另一台机器发送某种通知,通知它现在已经启动。

于 2008-10-11T14:37:48.883 回答
7

我认为检查 sshd 听起来是个好方法。

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

于 2008-10-11T14:24:26.117 回答
3

如何将脚本添加到在启动时运行的远程机器,让它告诉你它什么时候准备好。

于 2008-10-11T14:34:06.877 回答