python批量连接服务器检查容器是否正常

 更新时间:2024年01月12日 11:03:46   作者:碧莲城  python进阶测试  
在生产中,我们可能有很多项目或者很多环境,可能会部署在几百上千的服务器里面,我们该怎么定时去监控这些服务器里面的容器服务器是否正常呢,本文就来为大家讲解

引言

在生产中,我们可能有很多项目或者很多环境。可能会部署在几百上千的服务器里面。我们该怎么定时去监控这些服务器里面的容器服务器是否正常呢?

python监控docke容器是否正常运行中

下面我用python写了一个程序,可以直接去监控docke容器是否正常运行中:

# -*- coding: utf-8 -*-
import paramiko   # 导入paramiko 模块用于,SSH连接
# 定义一个名为server_list的字典,包含多个服务器的信息
sever_list = {
    '服务器1': ['192.168.1.1', 'root', '密码', 19005],
    '服务器2': ['116.168.10.253', 'root', '9997d9898LdJ', 22]
}
def traceback_methon(n):
    import traceback
    for key, values in sever_list.items():
        server, username, password, port = values  # 使用解构将值分别赋给五个变量
        try:
            ssh = paramiko.SSHClient()
            ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
            ssh.connect(server, username=username, password=password, port=port)  # 用户名和密码进行连接
            try:
                stdin, stdout, stderr = ssh.exec_command(
                    'docker ps --filter "status=exited" --filter "status=paused" --filter "status=removing" --filter "status=dead" --format "{{.ID}} {{.Names}} {{.Status}}"')  # 执行一个命令
            except paramiko.SSHException:
                print('命令执行失败:SSH协议异常')
                traceback.print_exc()  # 打印详细的错误信息
                continue
            except Exception:
                print('命令执行失败:其他异常')
                traceback.print_exc()  # 打印详细的错误信息
                continue
            for line in stdout:
                if line is not None or line != '':
                    print(str(n) + '、 ' + key + " " + server + " 该容器有问题 " + " >> " + line.strip('\n'))  # 打印输出结果
                else:
                    print(str(n) + '、 ' + key + '没有停止、暂停、迁移、死亡 的容器,')
                n = n + 1
        except paramiko.AuthenticationException:
            print('连接失败:认证失败')
            traceback.print_exc()  # 打印详细的错误信息
            continue
        except paramiko.SSHException:
            print('连接失败:SSH协议异常')
            traceback.print_exc()  # 打印详细的错误信息
            continue
        except Exception:
            print('连接失败:其他异常')
            traceback.print_exc()  # 打印详细的错误信息
            continue
paramiko_methon()

上面这段代码是一个Python脚本,用于通过SSH连接到一组服务器,并使用Docker命令检查每个服务器上是否有已停止、暂停、正在被移除或已死亡的容器。

代码解析

下面是代码的详细解释:

定义traceback_methon函数

这个函数是为了跟踪和输出异常信息。它接受一个参数n
遍历服务器列表:
对于sever_list字典中的每一项,代码执行以下操作:

  • 解构赋值:从字典值中提取出IP地址、用户名、密码和端口,并分别赋值给server,username,password,port变量。

  • 尝试建立SSH连接:使用paramiko.SSHClient()创建一个SSH客户端,并设置缺少主机密钥策略为自动添加。然后尝试使用给定的用户名和密码进行连接。

  • 执行Docker命令:如果SSH连接成功,代码将尝试执行一个Docker命令来查找具有特定状态的容器。它使用exec_command方法执行命令,并捕获标准输入、输出和错误输出。

  • 处理输出:对于每个服务器的输出,检查是否包含非空行。如果包含非空行,则打印出有关问题的容器信息;否则,打印出没有问题的容器信息。同时,递增n的值。

  • 处理异常:如果在尝试建立SSH连接或执行Docker命令时出现异常,代码将捕获异常并打印相应的错误消息。同时,继续处理下一个服务器。

异常处理

对于不同的异常情况(如认证失败、SSH协议异常等),代码会捕获它们并打印相应的错误消息。

让我们运行上面的程序脚本:

根据下方的结果。我们可以很清楚的看到哪个服务器的容器有问题,输出了容器ID、容器名称、容器状态。

后续我们还可以进行对这个 脚本优化,可进行持续集成Jenkins,发送邮件,发送钉钉和企业微信机器人等操作。

以上就是python批量连接服务器检查容器是否正常的详细内容,更多关于python服务器容器检查的资料请关注脚本之家其它相关文章!

相关文章

  • python 函数的缺省参数使用注意事项分析

    python 函数的缺省参数使用注意事项分析

    这篇文章主要介绍了python 函数的缺省参数使用注意事项,结合实例形式分析了Python函数缺省参数的使用方法与操作注意事项,需要的朋友可以参考下
    2019-09-09
  • Appium自动化测试实现H5页面元素定位

    Appium自动化测试实现H5页面元素定位

    本文主要介绍了Appium自动化测试实现H5页面元素定位,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • python关于图片和base64互转的三种方式

    python关于图片和base64互转的三种方式

    无论使用cv2、PIL还是直接读取图片的方法进行图片与Base64的转换,核心步骤都涉及到二进制格式的转换,每种方法的基本过程都是:Base64转二进制,然后二进制转图片,或反向操作,这些方法均基于二进制与图片转换的基本原理
    2024-09-09
  • python取余运算符知识点详解

    python取余运算符知识点详解

    在本篇文章中我们给大家整理了关于python取余运算符的写法以及相关知识点,有兴趣的朋友们可以参考学习下。
    2019-06-06
  • Python nonlocal关键字 与 global 关键字解析

    Python nonlocal关键字 与 global 关键字解析

    这篇文章主要介绍了Python nonlocal关键字 与 global 关键字解析,nonlocal关键字用来在函数或其他作用域中使用外层变量,global关键字用来在函数或其他局部作用域中使用全局变量,更多香瓜内容需要的小伙伴可以参考一下
    2022-03-03
  • django做form表单的数据验证过程详解

    django做form表单的数据验证过程详解

    这篇文章主要介绍了django做form表单的数据验证过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 用Python实现数据的透视表的方法

    用Python实现数据的透视表的方法

    今天小编就为大家分享一篇用Python实现数据的透视表的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • python与php实现分割文件代码

    python与php实现分割文件代码

    本文给大家分享的是两个分别使用python和php实现的将文件分割成小文件的代码,非常的实用有需要的小伙伴可以参考下
    2017-03-03
  • Python numpy.add函数的具体使用

    Python numpy.add函数的具体使用

    本文主要介绍了Python numpy.add函数的具体使用,numpy.add函数不仅仅是一个简单的加法操作,更是一个功能强大且高度优化的工具,可适用于各种复杂的数值计算和数据处理任务,感兴趣的可以了解一下
    2023-12-12
  • 报错No module named numpy问题的解决办法

    报错No module named numpy问题的解决办法

    之前安装了Python,后来因为练习使用Python写科学计算的东西,又安装了Anaconda,但是安装Anaconda之后又出现了一个问题,下面这篇文章主要给大家介绍了关于报错No module named numpy问题的解决办法,需要的朋友可以参考下
    2022-08-08

最新评论