用于重新启动一些 Linux 机器的 Linux shell 脚本

用于重新启动一些 Linux 机器的 Linux shell 脚本

我正在做一些我以前从未做过的事情。

我相信对你们中的一些人来说这很容易:)

我需要从我们的网络执行一个 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 组。

相关内容