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()

  

原文地址:https://www.cnblogs.com/zhangjianghua/p/8920517.html