欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python執(zhí)行shell獲取硬件參數(shù)寫入mysql的方法

 更新時(shí)間:2014年12月29日 10:14:53   投稿:shichen2014  
這篇文章主要介紹了python執(zhí)行shell獲取硬件參數(shù)寫入mysql的方法,可實(shí)現(xiàn)對(duì)服務(wù)器硬件信息的讀取及寫入數(shù)據(jù)庫(kù)的功能,非常具有實(shí)用價(jià)值,需要的朋友可以參考下

本文實(shí)例講述了python執(zhí)行shell獲取硬件參數(shù)寫入mysql的方法。分享給大家供大家參考。具體分析如下:

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

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

1. os.system()

復(fù)制代碼 代碼如下:
os.system('ls')
#返回結(jié)果0或者1,不能得到命令的輸出

2. os.popen()
復(fù)制代碼 代碼如下:
output = os.popen('ls')
print output.read()
#打印出的是命令輸出,但是得不到執(zhí)行的返回值

3. commands.getstatusoutput()
復(fù)制代碼 代碼如下:
(status, output) = commands.getstatusoutput('ls')
print status, output
#打印出返回值和命令輸出

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

復(fù)制代碼 代碼如下:

'''
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:
        #主機(jī)名
        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()
        #機(jī)器品牌
        brand = os.popen(""" dmidecode | grep 'Vendor' | head -1 | awk -F: '{print $2}' """).read()
        #型號(hào)
        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()

希望本文所述對(duì)大家的Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 基于Python實(shí)現(xiàn)開心消消樂(lè)小游戲的示例代碼

    基于Python實(shí)現(xiàn)開心消消樂(lè)小游戲的示例代碼

    這篇文章主要是帶著大家自制一款開心消消樂(lè),還原度超高哦~還在等什么動(dòng)動(dòng)手就能擁有屬于自己的”消消樂(lè)“小游戲呢,趕快學(xué)起來(lái)吧
    2022-05-05
  • 7個(gè)有用的Pandas顯示選項(xiàng)分享

    7個(gè)有用的Pandas顯示選項(xiàng)分享

    Pandas是一個(gè)在數(shù)據(jù)科學(xué)中常用的功能強(qiáng)大的Python庫(kù)。在某些情況下,我們可能希望更改所顯示內(nèi)容的格式,這就需要使用Pandas的一些定制功能來(lái)幫助我們自定義內(nèi)容的顯示方式。本文為大家總結(jié)了7個(gè)有用的Pandas顯示選項(xiàng),希望對(duì)大家有所幫助
    2022-12-12
  • caffe的python接口生成solver文件詳解學(xué)習(xí)

    caffe的python接口生成solver文件詳解學(xué)習(xí)

    這篇文章主要為大家介紹了caffe的python接口生成solver文件詳解學(xué)習(xí)示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 使用Python獲取愛奇藝電視劇彈幕數(shù)據(jù)的示例代碼

    使用Python獲取愛奇藝電視劇彈幕數(shù)據(jù)的示例代碼

    這篇文章主要介紹了用Python獲取愛奇藝電視劇彈幕數(shù)據(jù),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-01-01
  • 用Python爬取指定關(guān)鍵詞的微博

    用Python爬取指定關(guān)鍵詞的微博

    這篇文章主要介紹了用Python爬取指定關(guān)鍵詞的微博,下面文章圍繞Python爬取指定關(guān)鍵詞的微博的相關(guān)資料展開詳細(xì)內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • 解讀卷積神經(jīng)網(wǎng)絡(luò)的人臉識(shí)別

    解讀卷積神經(jīng)網(wǎng)絡(luò)的人臉識(shí)別

    這篇文章主要介紹了解讀卷積神經(jīng)網(wǎng)絡(luò)的人臉識(shí)別問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • python連接PostgreSQL數(shù)據(jù)庫(kù)的過(guò)程詳解

    python連接PostgreSQL數(shù)據(jù)庫(kù)的過(guò)程詳解

    這篇文章主要介紹了python連接PostgreSQL數(shù)據(jù)庫(kù)的過(guò)程詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • VSCode Python開發(fā)環(huán)境配置的詳細(xì)步驟

    VSCode Python開發(fā)環(huán)境配置的詳細(xì)步驟

    這篇文章主要介紹了VSCode Python開發(fā)環(huán)境配置的詳細(xì)步驟,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-02-02
  • Python日志:自定義輸出字段 json格式輸出方式

    Python日志:自定義輸出字段 json格式輸出方式

    這篇文章主要介紹了Python日志:自定義輸出字段 json格式輸出方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • python opencv進(jìn)行圖像拼接

    python opencv進(jìn)行圖像拼接

    這篇文章主要為大家詳細(xì)介紹了python opencv進(jìn)行圖像拼接,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評(píng)論