您好,欢迎访问一九零五行业门户网

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

使用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'''))  #
其它类似信息

推荐信息