• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > Python查看多台服务器进程的脚本分享

Python查看多台服务器进程的脚本分享

作者: 字体:[增加 减小] 来源:互联网

通过本文主要向大家介绍了python 多进程,python 进程,python 进程池,python 守护进程,python监控进程等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

最近做自己开发用相关服务的一个checklist,就写了这个脚本,用来在跳板机去检查各个服务器上面的相关服务是否正常

使用expect登录每个机器(因为安全问题,不能直接使用ssh信任),然后根据yaml文件的配置读取服务名字以及启动的进程数量 去检查每个服务是否正常 PS:难点是没有用端口转发也只有普通用户权限

checklist.py

def myprint(color,mes): #以前写的一个终端彩色打印的函数
    '''使用ANSI控制码终端显示彩色'''
    d = dict(r=31, g=32, gb=36, y=33, b=34, p=35, o=37)
    color = "\x1B[%d;%dm" % (1, d[color])
    print "%s%s\x1B[0m" % (color, mes)

def main():
    list = ['g', 'b', 'y', 'gb', 'p']
    light = 0
    for k in dataDict:
        if k.startswith('bj-'):
        color = list[light%5] #根据服务器对颜色轮循
            SERVER = dataDict[k]
        #我这是使用了-F 是因为我没有root权限不能修改hosts文件,但是我在config.yaml使用了别名,
        而这个定义就是自定义了sshconfig,默认是~/.ssh/config
        child = pexpect.spawn('ssh -F /tmp/sshconfig dongwm@{0}'.format(SERVER['host']))
        #因为有其他用户,可能他还没有链接过某服务器,最开始会让你确认服务器标识,需要点yes
        f = child.expect(['Password: ', 'password: ', 'continue connecting (yes/no)?'])
        if f == 2:
            #当这个flag为2  表示那个用户没有登录过某服务器
            child.sendline('yes')
            child.expect('password:')
            child.sendline('{0}'.format(mypasswd(SERVER['host']))) #mypasswd是加密我服务器权限的函数,每个服务器密码不同
        if f == 1:
            child.sendline('{0}'.format(mypasswd(SERVER['host'])))
        child.expect('~')
        for service in SERVER['service']:
        flag = 0
        #我在配置里面会加服务,一般会指定服务的进程数来对比是否正常
        if isinstance(service, dict):
            data =service.items()[0]
            service = data[0]
            num = data[1]
        else:
        #假如我在配置只指定服务,不指定进程数,那么只要确定跑了进程 不在乎进程数
            num = 0
            flag = 1
            child.expect('~')
            child.sendline('ps -ef|grep {0}|grep -v grep|wc -l'.format(
            service))
            child.readline()
            #进程数
            pro_num = child.readline().split('\r\n')[0]
        if int(pro_num) == num or flag:
            #进程数符合配置标注的数值
            myprint(color, '[{0}]  [{1}]  [{2}]  [{3}]'.format(k.center(12),
            SERVER['ip'].center(14), service.center(20), 'ok'.center(4)))
        else:
            myprint('r', '[{0}]  [{1}]  [{2}]  [{3}]  [{4}!={5}]'.format(k.center(12),
            SERVER['ip'].center(14), service.center(20), 'fail',
            pro_num, num))
        light += 1
            child.sendline('exit')

if __name__ == '__main__':
    main()
</div>

config.yaml 我这里只截取了其中一段
</div>

您可能想查找下面的文章:

  • Python守护进程和脚本单例运行详解
  • Python守护进程和脚本单例运行详解
  • 简单谈谈python中的多进程
  • Python控制多进程与多线程并发数总结
  • Python自定义进程池实例分析【生产者、消费者模型问题】
  • 深入理解python多进程编程
  • Python多进程同步简单实现代码
  • Python多进程同步简单实现代码
  • python多进程共享变量
  • Python语言实现获取主机名根据端口杀死进程

相关文章

  • 详解在Python程序中解析并修改XML内容的方法
  • 利用Python绘制MySQL数据图实现数据可视化
  • Python数据分析之真实IP请求Pandas详解
  • python基于itchat实现微信群消息同步机器人
  • Python Web服务器Tornado使用小结
  • python实现在控制台输入密码不显示的方法
  • Python-基础-入门 简介
  • Android模拟器无法启动,报错:Cannot set up guest memory ‘android_arm’ Invalid argument的解决方法
  • Python操作CouchDB数据库简单示例
  • 基于wxpython实现的windows GUI程序实例

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • 用Python写的图片蜘蛛人代码
    • 使用python分析git log日志示例
    • python抓取网页图片示例(python爬虫)
    • 详解Python中的array数组模块相关使用
    • python实现获取客户机上指定文件并传输到服务器的方法
    • django 文件上传功能的相关实例代码(简单易懂)
    • 用于统计项目中代码总行数的Python脚本分享
    • 在Gnumeric下使用Python脚本操作表格的教程
    • Python异常学习笔记
    • python用来获得图片exif信息的库实例分析

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有