python之返回狀態commands模塊


需要得到命令執行的狀態則需要判斷$?的值, 在Python中有一個模塊commands很容易做到以上的效果.

commands.getstatusoutput(cmd)  返回一個元組(status,output) 
status代表的shell命令的返回態,如果成功的話是0;output是shell的返回的結果

 實例:

>>> import commands
>>> commands.getstatusoutput('ls /bin/ls')
(0, '/bin/ls')
>>> commands.getstatusoutput('cat /bin/junk')
(256, 'cat: /bin/junk: No such file or directory')
>>> commands.getstatusoutput('/bin/junk')
(256, 'sh: /bin/junk: not found')
>>> commands.getoutput('ls /bin/ls')
'/bin/ls'

  

 應用場景-----監控磁盤狀態

#!/usr/bin/env python
#coding:utf-8
import commands
import sys
import time

STATE_OK=0
STATE_WARNING=1
STATE_CRITICAL=2
STATE_UNKNOWN=3

def foo():
    j = 0
    try:
        for i in ['a','b','c']:
            stat=commands.getstatusoutput('smartctl -H /dev/sd%s' %i)
            if stat[0] == 0:
                pass
                #print '/dev/sd%s is ok;' %i,
            else:
                print '/dev/sd%s is error;' %i,
                j+=1

        if j != 0:
            print 'Error - the %s diskes is error,' %j,time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
            sys.exit(STATE_CRITICAL)
        else:

            print 'OK - the disk (from a to k),all is OK,',time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
            sys.exit(STATE_OK)


    except ValueError:
        print "UNKNOWN"
        sys.exit(STATE_UNKNOWN)
foo()

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM