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

相关推荐
杨荧34 分钟前
基于Python的反诈知识科普平台 Python+Django+Vue.js
大数据·前端·vue.js·python·数据分析
大模型真好玩37 分钟前
深入浅出LangChain AI Agent智能体开发教程(九)—LangChain从0到1搭建知识库
人工智能·python·mcp
MZ_ZXD0016 小时前
springboot汽车租赁服务管理系统-计算机毕业设计源码58196
java·c++·spring boot·python·django·flask·php
A 计算机毕业设计-小途6 小时前
大四零基础用Vue+ElementUI一周做完化妆品推荐系统?
java·大数据·hadoop·python·spark·毕业设计·毕设
念念010710 小时前
数学建模竞赛中评价类相关模型
python·数学建模·因子分析·topsis
云天徽上10 小时前
【数据可视化-94】2025 亚洲杯总决赛数据可视化分析:澳大利亚队 vs 中国队
python·信息可视化·数据挖掘·数据分析·数据可视化·pyecharts
☺����11 小时前
实现自己的AI视频监控系统-第一章-视频拉流与解码2
开发语言·人工智能·python·音视频
王者鳜錸11 小时前
PYTHON让繁琐的工作自动化-函数
开发语言·python·自动化
xiao助阵12 小时前
python实现梅尔频率倒谱系数(MFCC) 除了傅里叶变换和离散余弦变换
开发语言·python
麻辣清汤13 小时前
结合BI多维度异常分析(日期-> 商家/渠道->日期(商家/渠道))
数据库·python·sql·finebi