我正在编写一个UPS监控控制台应用程序,当UPS电池在断电期间达到预定义的充电水平时,该应用程序将自动关闭服务器。
如果可能的话,我想在容器内运行它,因为NUT(网络UPS工具)非常难以在Windows系统上运行。我已经在裸机上配置了一次,我希望不要再次忍受这种疼痛,或者更糟的是,第三次。 (但这是另一天的另一场讨论。)
回到今天:我如何向容器的主机发送系统关闭命令?我只是尝试了shutdown /s /t 0
,但这会关闭容器。我需要联系主持人。
- 注意关闭选民 -
这个问题不偏离主题。注意this Q&A,举一个例子,它目前的票数超过2,000。问题中没有提到单一的编程概念。
Docker是开发人员使用的工具。所以它的主题在这个论坛上非常重要。对docker
标记运行快速查询,您就会明白我的意思。
答案 0 :(得分:0)
psshutdown \\host -u ... -p ...
应该可以解决这个问题。
有关详细信息和下载链接,请参阅https://technet.microsoft.com/en-us/sysinternals/psshutdown.aspx。
编辑:我将此留在此处,以记录由于Windows处理安全性的方式发生变化而无效的方法。按照下面提供的InteXXs链接,它清楚地描述了让psshutdown再次运行以及带来哪些安全风险所需的内容。
答案 1 :(得分:0)
涉及一些编程的方法是创建一个位于主机上并等待传入连接的小型服务。
然后该服务可以执行shutdown命令或调用适当的Windows API调用。
我建议使用单个URL为此服务提供最小的http端点,并使用用户/密码和SSL / TLS保护它。
然后,您可以使用curl --user user:pass https://host/shutdown
用golang和nssm实现它应该相当容易。