我正在做一些我以前从未做过的事情。
我相信对你们中的一些人来说这很容易:)
我需要从我们的网络执行一个 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 组。