最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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獲取指定目錄下所有文件名列表的方法

    python獲取指定目錄下所有文件名列表的方法

    這篇文章主要介紹了python獲取指定目錄下所有文件名列表的方法,涉及Python目錄及文件操作的相關(guān)技巧,需要的朋友可以參考下
    2015-05-05
  • Python實(shí)現(xiàn)給圖片添加文字或圖片水印

    Python實(shí)現(xiàn)給圖片添加文字或圖片水印

    在現(xiàn)今的數(shù)字化時(shí)代,網(wǎng)絡(luò)上的圖片泛濫,盜圖現(xiàn)象也越來越嚴(yán)重。因此,在發(fā)布文章時(shí),為了保護(hù)自己的原創(chuàng)作品版權(quán),很多人選擇使用水印來保護(hù)他們的圖片。本文就和大家分享了Python實(shí)現(xiàn)給圖片添加文字或圖片水印的方法,需要的可以收藏一下
    2023-05-05
  • 簡(jiǎn)單介紹Python中的JSON模塊

    簡(jiǎn)單介紹Python中的JSON模塊

    這篇文章主要介紹了簡(jiǎn)單介紹Python中的JSON模塊,包括初步的從Python中的數(shù)據(jù)格式轉(zhuǎn)換為JSON格式等,需要的朋友可以參考下
    2015-04-04
  • python3.5 tkinter實(shí)現(xiàn)頁面跳轉(zhuǎn)

    python3.5 tkinter實(shí)現(xiàn)頁面跳轉(zhuǎn)

    這篇文章主要為大家詳細(xì)介紹了python3.5 tkinter實(shí)現(xiàn)頁面跳轉(zhuǎn),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • Python 詳解通過Scrapy框架實(shí)現(xiàn)爬取CSDN全站熱榜標(biāo)題熱詞流程

    Python 詳解通過Scrapy框架實(shí)現(xiàn)爬取CSDN全站熱榜標(biāo)題熱詞流程

    Scrapy是用純Python實(shí)現(xiàn)一個(gè)為了爬取網(wǎng)站數(shù)據(jù)、提取結(jié)構(gòu)性數(shù)據(jù)而編寫的應(yīng)用框架,用途非常廣泛,框架的力量,用戶只需要定制開發(fā)幾個(gè)模塊就可以輕松的實(shí)現(xiàn)一個(gè)爬蟲,用來抓取網(wǎng)頁內(nèi)容以及各種圖片,非常之方便
    2021-11-11
  • 用Eclipse寫python程序

    用Eclipse寫python程序

    本篇文章給大家通過寫第一個(gè)python程序來詳細(xì)說明Eclipse配置以及發(fā)布過程,有興趣的朋友學(xué)習(xí)下。
    2018-02-02
  • python正則-re的用法詳解

    python正則-re的用法詳解

    這篇文章主要介紹了python正則-re的用法詳解,文中給大家提到了正則中的修飾符以及它的功能,需要的朋友可以參考下
    2019-07-07
  • 深入理解Python的元類

    深入理解Python的元類

    這篇文章主要為大家介紹了Python的元類,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-11-11
  • 一文讓你秒懂精通pip并快速體驗(yàn)深度學(xué)習(xí)應(yīng)用【建議收藏】

    一文讓你秒懂精通pip并快速體驗(yàn)深度學(xué)習(xí)應(yīng)用【建議收藏】

    在使用python的時(shí)候,經(jīng)常使用到pip這個(gè)工具,可以很方便的線上安裝依賴庫(kù),當(dāng)然pip還有很多參數(shù)都可以幫我們?nèi)ゲ樵円恍?kù)信息,這篇文章主要給大家介紹了如何通過一篇文章讓你秒懂精通pip并快速體驗(yàn)深度學(xué)習(xí)應(yīng)用的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • pandas的resample重采樣的使用

    pandas的resample重采樣的使用

    這篇文章主要介紹了pandas的resample重采樣的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04

最新評(píng)論

赤城县| 疏勒县| 满城县| 皮山县| 濮阳县| 博乐市| 米泉市| 河间市| 阿拉善右旗| 无棣县| 镇巴县| 陇西县| 萨迦县| 东方市| 临湘市| 南漳县| 民县| 广饶县| 商丘市| 吉首市| 封丘县| 抚松县| 玉龙| 兴义市| 宜阳县| 大港区| 崇左市| 邳州市| 延边| 北碚区| 宜丰县| 藁城市| 林州市| 尉犁县| 肇州县| 绥德县| 二连浩特市| 澄城县| 奉贤区| 梓潼县| 平顺县|