午夜国产狂喷潮在线观看|国产AⅤ精品一区二区久久|中文字幕AV中文字幕|国产看片高清在线

    python執(zhí)行shell獲取硬件參數(shù)寫入mysql的方法
    來源:易賢網(wǎng) 閱讀:1085 次 日期:2015-01-03 10:38:01
    溫馨提示:易賢網(wǎng)小編為您整理了“python執(zhí)行shell獲取硬件參數(shù)寫入mysql的方法”,方便廣大網(wǎng)友查閱!

    最近要獲取服務器各種參數(shù),包括cpu、內(nèi)存、磁盤、型號等信息。試用了Hyperic HQ、Nagios和Snmp,它們功能都挺強大的,但是于需求不是太符,亦或者太heavy。

    于是乎想到用python執(zhí)行shell獲取這些信息,python執(zhí)行shell腳本有以下三種方法:

    1. os.system()

    代碼如下:

    os.system('ls')

    #返回結(jié)果0或者1,不能得到命令的輸出

    2. os.popen()

    代碼如下:

    output = os.popen('ls')

    print output.read()

    #打印出的是命令輸出,但是得不到執(zhí)行的返回值

    3. commands.getstatusoutput()

    代碼如下:

    (status, output) = commands.getstatusoutput('ls')

    print status, output

    #打印出返回值和命令輸出

    可以根據(jù)需要選取其中一種方法,以下是python執(zhí)行shell獲取硬件參數(shù)寫入mysql,并定期更新的程序:

    代碼如下:

    '''

    Created on Dec 10, 2014

    @author: liufei

    '''

    #coding=utf-8

    import time, sched, os, string

    from datetime import datetime

    import MySQLdb

    s = sched.scheduler(time.time,time.sleep)

    def event_func():

        try:

            #主機名

            name = os.popen(""" hostname """).read()

            #cpu數(shù)目

            cpu_num = os.popen(""" cat /proc/cpuinfo | grep processor | wc -l """).read()

            #內(nèi)存大小

            mem = os.popen(""" free | grep Mem | awk '{print $2}' """).read()

            #機器品牌

            brand = os.popen(""" dmidecode | grep 'Vendor' | head -1 | awk -F: '{print $2}' """).read()

            #型號

            model = os.popen(""" dmidecode | grep 'Product Name' | head -1 | awk -F: '{print $2}' """).read()

            #磁盤大小

            storage = os.popen(""" fdisk -l | grep 'Disk /dev/sd' | awk 'BEGIN{sum=0}{sum=sum+$3}END{print sum}' """).read()

            #mac地址

            mac = os.popen(""" ifconfig -a | grep HWaddr | head -1 | awk '{print $5}' """).read()

           

            name = name.replace("\n","").lstrip()

            cpu_num =  cpu_num.replace("\n","").lstrip()

            memory_gb = round(string.atof(mem.replace("\n","").lstrip())/1000.0/1000.0, 1)

            brand = brand.replace("\n","").lstrip()

            model = model.replace("\n","").lstrip()

            storage_gb = storage.replace("\n","").lstrip()

            mac = mac.replace("\n","").lstrip()

           

            print name

            print cpu_num

            print memory_gb

            print storage_gb

            print brand

            print model

            print mac

       

            conn=MySQLdb.connect(host='xx.xx.xx.xx',user='USERNAME',passwd='PASSWORD',db='DBNAME',port=3306)

            cur=conn.cursor()

            cur.execute('select mac from servers where mac=%s',mac)

            data = cur.fetchone()

            if data is None:

                value = [name, brand, model, memory_gb, storage_gb, cpu_num, mac, datetime.now(), datetime.now()]

                cur.execute("insert into servers(name, brand, model, memory_gb, storage_gb, cpu_num, mac,  created_at, updated_at) values(%s, %s, %s, %s, %s, %s, %s, %s, %s)",value)           

            else:

                value1 = [name, brand, model, memory_gb, storage_gb, cpu_num, datetime.now(), mac]

                cur.execute("update servers set name=%s,brand=%s,model=%s,memory_gb=%s,storage_gb=%s,cpu_num=%s, updated_at=%s where mac=%s",value1)

              

            conn.commit()

            cur.close()

            conn.close()

           

        except MySQLdb.Error,e:

            print "Mysql Error %d: %s" % (e.args[0], e.args[1])

       

    def perform(inc):

        s.enter(inc,0,perform,(inc,))

        event_func()

       

    def mymain(inc=10):

        s.enter(0,0,perform,(inc,))

        s.run()

    if __name__ == "__main__":

        mymain()

    更多信息請查看IT技術(shù)專欄

    更多信息請查看腳本欄目

    2025國考·省考課程試聽報名

    • 報班類型
    • 姓名
    • 手機號
    • 驗證碼
    關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡要咨詢 | 簡要咨詢須知 | 新媒體/短視頻平臺 | 手機站點 | 投訴建議
    工業(yè)和信息化部備案號:滇ICP備2023014141號-1 云南省教育廳備案號:云教ICP備0901021 滇公網(wǎng)安備53010202001879號 人力資源服務許可證:(云)人服證字(2023)第0102001523號
    聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號:hfpxwx
    咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)