所以几周前我在这里问了一个问题,我得到的答复很有帮助,但我想我应该添加一些信息以获得更好的答复。
我使用的计算机系统有 8 台服务器(4 个主服务器、4 个备用服务器),这些服务器上有 16 个节点(每台服务器上有 4 个节点,每个备用服务器上有相同的节点)。在服务器上线之前,节点无法加载。所以我一直在编写两行独立的代码,直到我弄清楚如何将它们连接在一起。
for i in `echo server1; echo server2; echo server 3; echo server4; echo server5; echo server6; echo server7; echo server8`; do
echo $i
/remcmd $i username password 'superuser /reboot'
echo
done
那么我的第二个命令是
for i in `echo node1; echo node2; echo node3; echo node4; echo node5; echo node6; echo node7; echo node8; echo node9; echo node10; echo node11; echo node12; echo node13; echo node14; echo node15; echo node16
/remcmd $i username password 'superuser /reboot'
有没有办法重新启动服务器,然后等待 9 分钟,然后重新启动节点。我尝试过管道,但做了一些研究,但它不喜欢它。
任何人可以提供的帮助,我将不胜感激。
答案1
使用at
安排将来的命令(man at
供使用)。在您的服务器上或在节点上,具体取决于它们是什么以及哪个更适合控制重新启动。
servers="server1 server2 server3 server4"
nodes="node1 node2 node3 node4"
remcmd="something"
for server in $servers; do
echo "server [$server]"
for node in $nodes; do
echo "node [$node]"
# Locally schedule a node reboot in 9 minutes
at now + 9 minutes <<< "$remcmd $node username password 'superuser /reboot'"
# or remotely schedule the node reboot
$remcmd $node username password 'at now + 9 minutes <<< "superuser /reboot"'
done
# Reboot server now
$remcmd $server username password 'superuser /reboot'
done