当前位置 博文首页 > python实现巡检系统(solaris)示例

    python实现巡检系统(solaris)示例

    作者:admin 时间:2021-07-03 18:41

    使用python + shell 编写,是一个简易solaris系统巡检程序

    复制代码 代码如下:

    #!/usr/bin/python -u
    #-*- coding:utf-8 -*-
    '''
    程序:solaris_status.py
    author: gyh9711
    功能:
     系统状态信息获取

    语言: 
     sh + python

    注意:
     部分调用命令需要用到root权限

    测试情况:
     系统版本:solaris10 系统测试ok 
     测试服务器型号:sun 6900 6800 v445 v440 M3000 M5000
    内容:

    '''
    import time
    import sys
    import os
    import re
    # import pprint

    def getNow():
     return time.strftime("%Y-%m-%d %H:%M:%S",time.localtime())

    def puts(mess,_type="print"):

     if _type == "log":
      sys.stdout.write("[%s] %s\n" % (getNow(),mess))
     else:
      sys.stdout.write("%s\n" % mess)
     #pprint.pprint(mess)

    def getCommand(cmd):
     return [t.rstrip() for t in os.popen(cmd).readlines()]

    #通过系统状态信息:

    #系统基本情况
    puts("="*60)
    puts("检查时间 %s" % getNow())
    puts("-"*60)
    puts("\n系统基本信息")
    for i in getCommand("showrev"):
     puts(i)
    puts("="*60)
    puts("\n")
    puts("主机名称: %s " % getCommand("hostname")[0])
    puts("处理器core数: %s " % getCommand("mpstat |awk 'END{print NR-1}'")[0])
    puts("系统负载情况: %s " % getCommand("uptime")[0])
    puts("系统进程数: %s " % getCommand("ps -ef |wc -l")[0])
    puts("用户运行进程情况")
    psAll = getCommand('''ps -ef  |awk '{print $1}' |sort |uniq -c |grep -v "UID"''')
    puts("\n%s%s" %("用户".ljust(20),"进程数".ljust(10)))
    puts("-"*60)
    for i in psAll:
     _user = re.split(r"\s+",i)[1:]
     #print _user
     puts("%s%s" %(_user[1].ljust(20),_user[0].ljust(10)))
    puts("-"*60)

    puts("\n")
    puts("%s%s%s"%("="*30,"状态信息","="*30))
    puts("\n")
    puts("处理器使用情况: %s %%" % getCommand("vmstat 1 2 |tail -1 |awk '{print 100-$22}'")[0])
    puts("内存使用情况: %s %% 总大小:%s [M]" % (getCommand('''vmstat 1 2 |tail -1 |awk '{printf("%d",$5/1024/MEMALL*100);}' MEMALL=`prtconf |grep -i "^memory" |awk '{print $3}'`''')[0],getCommand('''prtconf |grep -i "^memory" |awk '{print $3}''')[0]))
    puts("swap使用情况: %s" % (getCommand("swap -s")[0]))
    puts("\n")
    puts("%s%s%s\n"%("="*30,"磁盘空间使用情况","="*30))

    for i in getCommand('''awk '{if($3 != "") {print $3}}' /etc/vfstab |egrep -v "mount|to|-" |xargs df -h'''):
     puts(i)
    puts("\n%s%s%s\n"%("="*30,"网络情况","="*30))


    puts("网络接口状态")
    for i in getCommand('''for i in `ifconfig -a |egrep "^{hme|qfe|ge|ce|eri|bge|nge|e1000g}" |cut -d: -f1`; do /sbin/dladm show-dev $i; done'''):
     puts(i)
    puts("\n网络接口IP及数据进出情况")
    for i in getCommand("netstat -in"):
     puts(i)

    puts("\n网络接口流量情况")
    for i in getCommand('''for i in `ifconfig -a |egrep "^{hme|qfe|ge|ce|eri|bge|nge|e1000g}" |cut -d: -f1`; do netstat -I $i; done'''):
     puts(i)
    puts("\n 网络ARP缓存信息")
    for i in getCommand("netstat -anp"):
     puts(i)
    puts("\n")
    puts("\n 路由表情况")
    for i in getCommand("netstat -rn"):
     puts(i)
    puts("\n")

    puts("\n%s%s%s\n"%("="*30,"系统主要服务及状态[svcs]","="*30))
    for i in getCommand('''svcs'''):
     puts(i)
    puts("\n%s%s%s\n"%("="*30,"服务硬件状态[prtdiag]","="*30))
    for i in getCommand('''prtdiag -v'''):
     puts(i)

    # puts(getCommand("showrev"))
    #硬件状态信息
    #puts(getCommand("prtdiag -v"))

    #cpu情况
    #puts(getCommand("mpstat"))
    #puts(getCommand("sar -u"))

    #物理内存大小
    #puts(getCommand('''/usr/sbin/prtdiag -v |grep "^Memory"'''))
    #虚拟内存
    #puts(getCommand('''vmstat 1 2'''))
    #puts(getCommand('''swap -s'''))


    #=================磁盘IO情况=================
    #puts(getCommand('''iostat -xtc'''))  #

    jsjbwy
下一篇:没有了