Python尝试循环连接服务器,如果连接成功则退出,如果超过3次连接失败则退出

下面是一个使用Python实现的程序,可以实现你描述的功能:通过SSH连接服务器并重启服务器,然后循环尝试连接服务器,如果连接成功则退出,如果超过3次连接失败则退出。

首先,请确保你已经安装了`paramiko`库,它是一个用于SSH连接的Python库。你可以使用`pip install paramiko`命令进行安装。

python 复制代码
import time
import paramiko

def connect_ssh(hostname, port, username, password):
    client = paramiko.SSHClient()
    client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
    
    try:
        client.connect(hostname=hostname, port=port, username=username, password=password)
        print("SSH连接成功!")
        return client
    except Exception as e:
        print(f"SSH连接失败:{e}")
        return None

def reboot_server(client):
    try:
        _, stdout, _ = client.exec_command("reboot")
        stdout.channel.recv_exit_status()
        print("服务器重启中...")
    except Exception as e:
        print(f"重启服务器失败:{e}")

def check_server_status(hostname):
    max_retries = 3  # 最大重试次数
    retries = 0
    connected = False

    while retries < max_retries:
        try:
            # 尝试连接服务器
            ssh = connect_ssh(hostname, 22, "your_username", "your_password")
            if ssh is not None:
                ssh.close()
                print("成功连接到服务器!")
                connected = True
                break  # 连接成功,跳出循环
            else:
                retries += 1
                time.sleep(10)  # 连接失败,等待10秒后重试
        except Exception as e:
            print(f"连接服务器失败:{e}")
            retries += 1
            time.sleep(10)  # 连接失败,等待10秒后重试

    if not connected:
        print(f"连接服务器失败超过 {max_retries} 次,程序退出。")

# 服务器信息
server_hostname = "your_server_hostname_or_ip"

# SSH连接和重启服务器
print("正在连接服务器...")
ssh_client = connect_ssh(server_hostname, 22, "your_username", "your_password")
if ssh_client is not None:
    print("成功连接到服务器!")
    print("正在重启服务器...")
    reboot_server(ssh_client)
    ssh_client.close()

# 循环尝试连接服务器
print("正在尝试连接服务器...")
check_server_status(server_hostname)

请注意替换以下参数:

  • `your_server_hostname_or_ip`:目标服务器的主机名或IP地址。

  • `your_username`:SSH连接使用的用户名。

  • `your_password`:SSH连接使用的密码。

在这个示例中,我们首先通过SSH连接服务器并重启服务器,然后循环尝试连接服务器。如果连接成功,则打印成功消息并退出。如果超过3次连接失败,则打印失败消息并退出。

相关推荐
Zhansiqi6 小时前
day42部分题目
python
小王不爱笑1327 小时前
IO 模型
开发语言·python
kishu_iOS&AI7 小时前
Conda 简要说明与常用指令
python·安全·conda
小陈工7 小时前
FastAPI性能优化实战:从每秒100请求到1000的踩坑记录
python·性能优化·django·flask·numpy·pandas·fastapi
知我Deja_Vu7 小时前
【避坑指南】ConcurrentHashMap 并发计数优化实战
java·开发语言·python
njidf7 小时前
用Python制作一个文字冒险游戏
jvm·数据库·python
呆呆小孩7 小时前
Anaconda 被误删抢救手册:从绝望到重生
python·conda
liliangcsdn7 小时前
LLM复杂数值的提取计算场景示例
人工智能·python
人工智能AI酱8 小时前
【AI深究】逻辑回归(Logistic Regression)全网最详细全流程详解与案例(附大量Python代码演示)| 数学原理、案例流程、代码演示及结果解读 | 决策边界、正则化、优缺点及工程建议
人工智能·python·算法·机器学习·ai·逻辑回归·正则化
WangLanguager8 小时前
逻辑回归(Logistic Regression)的详细介绍及Python代码示例
python·算法·逻辑回归