【问题标题】:Python script to reboot server N timesPython脚本重启服务器N次
【发布时间】:2015-09-15 05:13:17
【问题描述】:

我正在尝试对几台可以通过 ssh 连接的服务器进行压力测试。我正在尝试编写一个导致 N 次重启循环的 python 脚本。我打电话给

os.system('reboot') 

但是,我不确定如何让脚本在服务器完成启动后继续执行以继续执行。这些服务器确实运行各种 Linux 发行版。任何帮助都会很棒。

【问题讨论】:

  • 问题:你让python参与其中吗?或者任何解决方案都行得通?
  • 在 ssh 连接时不断重启,真的让他们压力很大
  • 我想任何解决方案都会奏效。我只是习惯了python,所以这就是我选择的。
  • 除非您启动进程并从某些存储的状态文件(例如磁盘上的文件)中读取数据,否则您无法在服务器本身上执行此操作。

标签: python linux stress-testing


【解决方案1】:

你可以use Fabric to ssh into several servers in parallel and to execute various commands there(即使是那些需要重启的命令——你可能需要在这些命令之后明确断开fabfile.py中的所有服务器)。

【讨论】:

    【解决方案2】:

    您提到解决方案不必使用 Python,因此您可以为此使用 Bash 脚本(假设您可以 ping 服务器):

    #!/usr/bin/env bash
    COUNTER=$1
    SERVER=$2
    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 调用它。

    【讨论】:

    • 干杯,很高兴它帮助了你。
    猜你喜欢
    • 2022-01-20
    • 2021-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    相关资源
    最近更新 更多