云计算python

import paramiko

def check_nginx_remotely(hostname, username, password):
    """
    远程检查并启动 Nginx 服务

    此函数通过 SSH 连接远程服务器,检查 Nginx 是否安装并启动服务
    如果 Nginx 未安装,将根据操作系统自动安装并启动 Nginx

    参数:
    hostname (str): 服务器主机名或 IP 地址
    username (str): SSH 登录用户名
    password (str): SSH 登录密码
    """
    # 创建 SSH 客户端实例
    ssh = paramiko.SSHClient()
    # 自动添加主机密钥策略
    ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

    try:
        # 尝试连接远程服务器
        ssh.connect(hostname, username=username, password=password)
        # 执行命令检查 Nginx 是否安装
        stdin, stdout, stderr = ssh.exec_command('which nginx')
        output = stdout.read().decode().strip()
        if output :
            # 如果已安装 Nginx,检查服务状态
            print("远程服务器上已安装 Nginx")
            stdin, stdout, stderr = ssh.exec_command('systemctl is-active nginx')
            output = stdout.read().decode().strip()
            if output == 'inactive' :
                # 如果服务未启动,则启动 Nginx 服务
                print("Nginx 服务未启动")
                _, stdout, stderr = ssh.exec_command('systemctl start nginx')
                print("已启动")
        else:
            # 如果未安装 Nginx,根据操作系统进行安装
            print("远程服务器上未安装 Nginx")
            stdin, stdout, stderr = ssh.exec_command('uname -a')
            output = stdout.read().decode().strip()
            string = output
            keyword = "Linux"
            if keyword in string:
                # 如果是 Linux 系统,使用 yum 安装 Nginx
                print("检测系统为Linux,即将为您安装nginx服务")
                stdin, stdout, stderr = ssh.exec_command('yum install -y nginx')
                stdout.read().decode().strip()
                print("安装完成")
                stdin, stdout, stderr = ssh.exec_command('systemctl start nginx')
                stdout.read().decode().strip()
                print("启动完成")
            else :
                # 如果是 Ubuntu 系统,使用 apt 安装 Nginx
                print("检测系统为Ubuntu,即将为您安装nginx服务")
                stdin, stdout, stderr = ssh.exec_command('apt install -y nginx')
                stdout.read().decode().strip()
                print("安装完成")
                stdin, stdout, stderr = ssh.exec_command('systemctl start nginx')
                stdout.read().decode().strip()
        #通过验证是否能打开对应ip网页检测nginx服务是否正常启动
        import webbrowser
        def open_webpage_by_ip(ip_address):
            try :
                webbrowser.open(ip_address)
                print("Nginx 服务已启动")
            except :
                print("Nginx 服务未正常启动")
        # 要打开的网页的 IP 地址
        ip_address = "http://192.168.19.128"
        open_webpage_by_ip(ip_address)
    except paramiko.AuthenticationException:
        # 认证失败时的错误处理
        print("认证失败,请检查用户名和密码")
    except paramiko.SSHException as e:
        # SSH 连接错误处理
        print(f"SSH 连接错误: {e}")
    finally:
        # 确保 SSH 连接关闭
        ssh.close()

# 替换为实际的服务器主机名、用户名和密码
hostname = '192.168.19.128'
username = 'root'
password = '123456'
# 调用函数检查远程服务器上的 Nginx 服务
check_nginx_remotely(hostname, username, password)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值