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

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

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

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

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

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

相關(guān)文章

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

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

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

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

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

    簡單介紹Python中的JSON模塊

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

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

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

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

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

    用Eclipse寫python程序

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

    python正則-re的用法詳解

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

    深入理解Python的元類

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

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

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

    pandas的resample重采樣的使用

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

最新評論

秦皇岛市| 民乐县| 甘德县| 盖州市| 威信县| 濮阳县| 那曲县| 孙吴县| 佛山市| 宝鸡市| 当涂县| 谷城县| 道孚县| 合川市| 汶川县| 东兰县| 金沙县| 修文县| 铜山县| 句容市| 双辽市| 大丰市| 平陆县| 扶余县| 大港区| 庆城县| 乐昌市| 漯河市| 广德县| 宁武县| 祁连县| 黄冈市| 望江县| 绥中县| 察哈| 青海省| 巴彦淖尔市| 新巴尔虎左旗| 高唐县| 东辽县| 即墨市|