利用paramiko模塊批量查看遠程機器上指定進程的相關信息

以前總是利用shell來編寫腳本,最近學習python,發現paramiko使用上很方便,paramiko就是利用ssh協議進行通信。


需求:利用paramiko庫遠程連接到遠程服務器,執行命令“ps aux”,查看指定服務的的cpu,內存,VSZ,RSS信息,並且以指定格式輸出。


腳本如下:

#! /usr/bin/env python
#coding:utf-8
#通過paramiko模塊,獲得遠程機器的指定進程相關信息;


import paramiko

host_lists=(
            ('node1','172.16.41.151'),
            ('node2','172.16.41.152'),
            ('node3','172.16.41.153'),
            ('node4','172.16.41.158')
        )



def getServerInfo(host,user,password,services):
     conn = paramiko.SSHClient()
     conn.load_system_host_keys()
     conn.set_missing_host_key_policy(paramiko.AutoAddPolicy())
     conn.connect(host,22,user,password)
     stdin,stdout,stderr = conn.exec_command("ps aux|awk '{print $3,$4,$5,$6,$11}'|grep %s" % services)
     info = stdout.read()
     conn.close()

     return info

if __name__ == '__main__':
    print "hostname   %CPU   %MEM   VSZ   RSS   services"
    for host in host_lists:
        try:
            info = getServerInfo(host[1],'root','passwd','cupsd')
            info_list = info.split()
            print "%s %s %s %s %s %s " % (host[0],info_list[0],info_list[1],info_list[2],info_list[3],info_list[4] )
        except:
            pass



執行結果如下:

wKioL1Ry4NfwyBGJAADm5M7lg3A271.jpg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章