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

相关推荐
乔巴先生244 小时前
LLMCompiler:基于LangGraph的并行化Agent架构高效实现
人工智能·python·langchain·人机交互
张子夜 iiii5 小时前
实战项目-----Python+OpenCV 实现对视频的椒盐噪声注入与实时平滑还原”
开发语言·python·opencv·计算机视觉
困鲲鲲6 小时前
Flask 核心基础:从 路由装饰器 到 __name__ 变量 的底层逻辑解析
python·flask
njxiejing6 小时前
Python NumPy安装、导入与入门
开发语言·python·numpy
Rhys..7 小时前
Python&Flask 使用 DBUtils 创建通用连接池
开发语言·python·mysql
Just_Paranoid7 小时前
【Python Tkinter】图形用户界面(GUI)开发及打包EXE指南
python·gui·tkinter·pyinstaller
小宁爱Python7 小时前
Django 基础入门:命令、结构与核心配置全解析
后端·python·django
闲人编程8 小时前
Flask 前后端分离架构实现支付宝电脑网站支付功能
python·架构·flask·支付宝·前后端·网站支付·apl
996终结者8 小时前
同类软件对比(四):Jupyter vs PyCharm vs VS Code:Python开发工具终极选择指南
vscode·python·jupyter·pycharm·visual studio code
果壳~8 小时前
【Python】爬虫html提取内容基础,bs4
爬虫·python·html