亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Python查看多臺服務器進程的腳本分享

 更新時間:2014年06月11日 09:03:03   作者:  
這篇文章主要介紹了Python查看多臺服務器進程的腳本分享,需要的朋友可以參考下

最近做自己開發(fā)用相關服務的一個checklist,就寫了這個腳本,用來在跳板機去檢查各個服務器上面的相關服務是否正常

使用expect登錄每個機器(因為安全問題,不能直接使用ssh信任),然后根據(jù)yaml文件的配置讀取服務名字以及啟動的進程數(shù)量 去檢查每個服務是否正常 PS:難點是沒有用端口轉發(fā)也只有普通用戶權限

checklist.py

復制代碼 代碼如下:

#coding=utf-8
import sys
#因為我這個腳本要讓很多人能運行,但是不能給他們看見我的密碼算法,所以是pyc
#我這個腳本要給很多其他普通用戶去用,是用我的ssh登錄操作,不能放在我的home目錄,所以放在tmp
sys.path.append('/tmp/local/lib/python2.6/site-packages/PyYAML-3.10-py2.6-linux-x86_64.egg') #依賴yaml
sys.path.append('/tmp/local/lib/python2.6/site-packages/pexpect-2.4-py2.6.egg') #依賴pexpect
import yaml
import pexpect
dataDict = yaml.load(open('/tmp/config.yaml')) #將我的yaml配置load進來

def myprint(color,mes): #以前寫的一個終端彩色打印的函數(shù)
    '''使用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] #根據(jù)服務器對顏色輪循
            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是加密我服務器權限的函數(shù),每個服務器密碼不同
        if f == 1:
            child.sendline('{0}'.format(mypasswd(SERVER['host'])))
        child.expect('~')
        for service in SERVER['service']:
        flag = 0
        #我在配置里面會加服務,一般會指定服務的進程數(shù)來對比是否正常
        if isinstance(service, dict):
            data =service.items()[0]
            service = data[0]
            num = data[1]
        else:
        #假如我在配置只指定服務,不指定進程數(shù),那么只要確定跑了進程 不在乎進程數(shù)
            num = 0
            flag = 1
            child.expect('~')
            child.sendline('ps -ef|grep {0}|grep -v grep|wc -l'.format(
            service))
            child.readline()
            #進程數(shù)
            pro_num = child.readline().split('\r\n')[0]
        if int(pro_num) == num or flag:
            #進程數(shù)符合配置標注的數(shù)值
            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()

config.yaml 我這里只截取了其中一段

復制代碼 代碼如下:

bj-2:
  host: s233 #這個s233在sshconfig指定
  ip: XXX.XXX.XXX.233 #只是為了顯示出ip 好確認
  service: #服務load后是一個列表
  #給XX用
  - nginx: 5
  - uwsgi: 25
  - supervisord: 1
  #給本機XX提供mysql服務
  - mysql: 3 #django
  #給本機XX提供XX
  - celery: 12
  #給本機XX提供XX
  - rabbitmq: 9
  - redis: 1
  - mongod: 2

相關文章

  • 跟老齊學Python之深入變量和引用對象

    跟老齊學Python之深入變量和引用對象

    本講再次提及變量和引用對象,就是要讓看官對變量和賦值有一個知其然和知其所以然的認識。當然,最后能不能達到此目的,主要看我是不是說的通俗易懂了。如果您沒有明白,就說明我說的還不夠好,可以聯(lián)系我,我再為您效勞。
    2014-09-09
  • Python生成指定大小的文件兩種解決方案

    Python生成指定大小的文件兩種解決方案

    這篇文章主要介紹了Python生成指定大小的文件,這里提供兩種解決方案幫助python完成我們生成任意大小的文件,需要的朋友可以參考下
    2023-06-06
  • Python表格數(shù)據(jù)處理庫之tablib庫詳解

    Python表格數(shù)據(jù)處理庫之tablib庫詳解

    這篇文章主要介紹了Python表格數(shù)據(jù)處理庫之tablib庫詳解,Tablib是一個用于處理電子表格數(shù)據(jù)的Python庫,它可以輕松地進行數(shù)據(jù)的導入和導出,以及數(shù)據(jù)格式的轉換,需要的朋友可以參考下
    2023-08-08
  • Pyramid Mako模板引入helper對象的步驟方法

    Pyramid Mako模板引入helper對象的步驟方法

    ylons中的mako模板,默認會引入一個helper對象,我們可以在里面擴展方法,應對在模板輸出時候會常用的操作,那么在Pyramid中如何默認引入同樣的輔助類到模板中
    2013-11-11
  • Python map和reduce函數(shù)用法示例

    Python map和reduce函數(shù)用法示例

    這篇文章主要介紹了Python map和reduce函數(shù)用法示例,本文給出了兩個函數(shù)的多個用法示例,需要的朋友可以參考下
    2015-02-02
  • Python讀取Hive數(shù)據(jù)庫實現(xiàn)代碼詳解

    Python讀取Hive數(shù)據(jù)庫實現(xiàn)代碼詳解

    這篇文章主要介紹了Python讀取Hive數(shù)據(jù)庫實現(xiàn)代碼,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-03-03
  • Python機器學習pytorch模型選擇及欠擬合和過擬合詳解

    Python機器學習pytorch模型選擇及欠擬合和過擬合詳解

    如何發(fā)現(xiàn)可以泛化的模式是機器學習的根本問題,將模型在訓練數(shù)據(jù)上過擬合得比潛在分布中更接近的現(xiàn)象稱為過擬合,用于對抗過擬合的技術稱為正則化
    2021-10-10
  • jupyter notebook 增加kernel教程

    jupyter notebook 增加kernel教程

    這篇文章主要介紹了jupyter notebook 增加kernel教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • python實現(xiàn)蒙特卡羅模擬法的實踐

    python實現(xiàn)蒙特卡羅模擬法的實踐

    ?蒙特卡洛就是產(chǎn)生隨機變量,帶入模型算的結果,尋優(yōu)方面,本文主要介紹了python 蒙特卡羅模擬法實現(xiàn),文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • shell命令行,一鍵創(chuàng)建 python 模板文件腳本方法

    shell命令行,一鍵創(chuàng)建 python 模板文件腳本方法

    下面小編就為大家分享一篇shell命令行,一鍵創(chuàng)建 python 模板文件腳本方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-03-03

最新評論