![用于重新启动一些 Linux 机器的 Linux shell 脚本](https://linux22.com/image/77305/%E7%94%A8%E4%BA%8E%E9%87%8D%E6%96%B0%E5%90%AF%E5%8A%A8%E4%B8%80%E4%BA%9B%20Linux%20%E6%9C%BA%E5%99%A8%E7%9A%84%20Linux%20shell%20%E8%84%9A%E6%9C%AC.png)
我正在做一些我以前从未做过的事情。
我相信对你们中的一些人来说这很容易:)
我需要从我们的网络执行一个 linux shell 脚本,它将 ssh 连接到该设备并在 15 分钟的时间间隔内重新启动它们。
我想它会看起来像这样:
#!/bin/bash
USERNAME=someUser
HOSTS="host1 host2 host3"
SCRIPT="pwd; ls"
for HOSTNAME in ${HOSTS} ; do
ssh -l ${USERNAME} ${HOSTNAME} "${SCRIPT}"
done
需要用ssh连接来连接reboot命令
for p in server1 server2 server3
do
ssh ${p} sudo reboot
sleep 900
done
我需要它在第一台计算机重新启动后 15 分钟后进行连接和重新启动。
答案1
你问的基本上是这样的。
#!/bin/bash
for i in `cat ~/servers.txt`
do
echo -n $i" "
ssh -l sudo_user $i "sudo shutdown -r now"
sleep 900
done
请注意,在睡眠状态下,您将在下达上一个订单后大约 15 分钟发出重新启动命令,而不是在完成重新启动后 15 分钟。你需要的可以用一个简单的 bash shell 来完成,如果我们谈论的是几个服务器,我更喜欢使用 Rundeck,或者如果我们谈论的是 100 多个服务器,我更喜欢使用 Ansible。
该脚本最好使用 sudo 用户运行;最好不要使用 root 进行当前管理,更不用说通过 ssh 进行管理了。为了让它无缝工作,您必须事先在每台服务器上使用正确的 ssh RSA 密钥填充用户,并将其添加到 sudo 组。