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次连接失败,则打印失败消息并退出。

相关推荐
赵大仁2 小时前
极空间 NAS 没有命令行,我逆向了它的桌面客户端
python·ai编程·nas·mcp·极空间
空白2 小时前
Power BI +VBA 【数据分析】
python
科技苑8 小时前
Python简单网络爬虫教程
爬虫·python
Patrick在香港11 小时前
Claude Prompt 香港场景:公文里「今日」落在 6 个日历日上,「翌日」锚错了 5 天
python·自然语言处理·正则表达式·claude·数据清洗
YsyaaabB12 小时前
Python 数值分析
python
阿洛学长12 小时前
计算机二级 Python 基本操作题(15 分)真题笔记(0101 ~ 1903 全套)
python·pycharm
weixin1997010801612 小时前
[特殊字符]️《二手ERP对接电商平台的总体方案:统一数据模型 + 事件驱动 + 灰度上线6原则》(附Python源码)
大数据·python
滚雪球~13 小时前
量化交易 防止Windows电脑自动更新并重启
python·量化
L@ncor14 小时前
第二章可能出现的问题
人工智能·python
y = xⁿ14 小时前
大模型基础概念
python