Python 重启服务器 N 次的脚本
Python script to reboot server N times
我正在尝试对我可以通过 SSH 连接到的几台服务器进行压力测试。我正在尝试编写一个导致 N 次重启循环的 python 脚本。我叫
os.system('reboot')
但是,我不确定如何让脚本在服务器完成启动后继续执行以继续执行。服务器执行 运行 Linux 的各种发行版。任何帮助都会很棒。
您可以 use Fabric
to ssh into several servers in parallel and to execute various commands there(即使是那些需要重新启动的命令——您可能需要在执行此类命令后 fabfile.py
中明确断开所有服务器的连接)。
您提到解决方案不必在 Python 中,因此您可以为此使用 Bash 脚本(前提是您可以 ping 服务器):
#!/usr/bin/env bash
COUNTER=
SERVER=
COMMAND="sudo reboot"
SLEEP_DURATION=60
echo "Working on $SERVER $COUNTER times"
while (( $COUNTER > 0 )); do
ping -c 1 -t 5 $SERVER;
_ping_r=$?
if (( $_ping_r < 1 )); then
echo "Rebooting $SERVER"
ssh $SERVER $COMMAND;
let COUNTER=COUNTER-1
else
echo "Couldn't ping $SERVER. Taking a quick nap and trying again."
sleep 5
fi
sleep $SLEEP_DURATION;
done
echo "Done working on $SERVER"
将其保存为类似 command_runner.sh
的格式,然后在可以 SSH 的工作站上通过 ./command_runner.sh 2 server.example.org
简单地调用它并 运行 在服务器上重新启动。
我正在尝试对我可以通过 SSH 连接到的几台服务器进行压力测试。我正在尝试编写一个导致 N 次重启循环的 python 脚本。我叫
os.system('reboot')
但是,我不确定如何让脚本在服务器完成启动后继续执行以继续执行。服务器执行 运行 Linux 的各种发行版。任何帮助都会很棒。
您可以 use Fabric
to ssh into several servers in parallel and to execute various commands there(即使是那些需要重新启动的命令——您可能需要在执行此类命令后 fabfile.py
中明确断开所有服务器的连接)。
您提到解决方案不必在 Python 中,因此您可以为此使用 Bash 脚本(前提是您可以 ping 服务器):
#!/usr/bin/env bash
COUNTER=
SERVER=
COMMAND="sudo reboot"
SLEEP_DURATION=60
echo "Working on $SERVER $COUNTER times"
while (( $COUNTER > 0 )); do
ping -c 1 -t 5 $SERVER;
_ping_r=$?
if (( $_ping_r < 1 )); then
echo "Rebooting $SERVER"
ssh $SERVER $COMMAND;
let COUNTER=COUNTER-1
else
echo "Couldn't ping $SERVER. Taking a quick nap and trying again."
sleep 5
fi
sleep $SLEEP_DURATION;
done
echo "Done working on $SERVER"
将其保存为类似 command_runner.sh
的格式,然后在可以 SSH 的工作站上通过 ./command_runner.sh 2 server.example.org
简单地调用它并 运行 在服务器上重新启动。