![如何在 shell 脚本中使用另一台计算机的 IP 来关闭它们](https://linux22.com/image/33977/%E5%A6%82%E4%BD%95%E5%9C%A8%20shell%20%E8%84%9A%E6%9C%AC%E4%B8%AD%E4%BD%BF%E7%94%A8%E5%8F%A6%E4%B8%80%E5%8F%B0%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%9A%84%20IP%20%E6%9D%A5%E5%85%B3%E9%97%AD%E5%AE%83%E4%BB%AC.png)
命令通过 shell 脚本“使用 ssh 命令”在特定时间按 IP 关闭服务器集合
答案1
该命令将使您的计算机关闭。
$ ssh user@remote_computer sudo poweroff
您应该注意到,这两个命令将提示您输入密码两次。为了使其不要求您输入密码,您应该将 ssh 密钥复制到远程计算机。并使非 root 用户可以访问 poweroff 命令。
要使用服务器列表,您可以使用如下内容:
#!/bin/bash
$servers="server1 server2 server3"
for server in $servers
do
ssh user@$server sudo poweroff
done
在特定时间执行此操作的最佳选择是在 cron 中安排脚本。
答案2
如果你有很多服务器,并且你想并行关闭它们,但同时你想限制同时关闭的服务器数量,以限制 ssh 加密的 CPU 消耗和限制数量对于传出网络连接,您可以使用Makefile
shell 脚本来代替。
它可能看起来像这样:
SERVERS:=server1 server2 server3
.PHONY: shutdown
shutdown: $(addsuffix +shutdown,$(SERVERS))
%+shutdown:
ssh user@$* sudo poweroff
然后,您可以使用 ie 运行此命令make -j 20
来并行关闭多个服务器,将其限制为一次最多 20 个。