如果我们在局域网上有一组 Linux 计算机,如何编写 shell 脚本来关闭所有计算机

如果我们在局域网上有一组 Linux 计算机,如何编写 shell 脚本来关闭所有计算机

我有实验室,其中的 Linux 计算机集合连接在 LAN 中。我想知道如何编写 shell 脚本以便在运行该 shell 脚本时关闭所有 PC。

答案1

inventory.txt将主机名或 IP 地址放入如下命名的文件中:

computer1
computer2
192.168.1.1

使用此脚本:

while read host; do
    ssh root@${host} shutdown -h now
done < inventory.txt

答案2

抱歉,我不允许添加评论(声誉不够高?),所以很遗憾必须将其作为答案发布

我也很好奇为什么答案也被否决了。@Cristian 的回答有很多优点,我同意如果 OP 没有 SSH 守护程序,他要么说他需要一个解决方法,要么他会意识到他可能需要安装它。考虑到大多数此类问题的答案都会使用 SSH 守护程序,我认为这是个好答案。

话虽如此,我也同意您应该使用 root 来执行此操作并使用 ssh 密钥身份验证。这是最好和最安全的答案。当然,您不会在 ssh 脚本中使用密码 - 更难做到(可能需要使用 expect)并且不太安全。

我不知道如何使用非 root 用户来关闭电源/重启。使用您发送的链接,您意识到 sudo 用户配置为没有密码,然后关闭机器。这意味着任何知道用户名的用户都可以 sudo 到该用户并关闭电源。这是你真正想要的吗?

再次抱歉,这是作为单独的答案发布的 - 我想将其作为对@Cristian 答案的评论添加,因为我会投票支持他的答案

相关内容