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


Posted in Python onApril 02, 2014

使用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'''))  #
Python 相关文章推荐
Python中for循环和while循环的基本使用方法
Aug 21 Python
使用Python的Tornado框架实现一个Web端图书展示页面
Jul 11 Python
详细介绍Python的鸭子类型
Sep 12 Python
pycharm 将django中多个app放到同个文件夹apps的处理方法
May 30 Python
彻底理解Python中的yield关键字
Apr 01 Python
简单了解python调用其他脚本方法实例
Mar 26 Python
django xadmin action兼容自定义model权限教程
Mar 30 Python
Python定时从Mysql提取数据存入Redis的实现
May 03 Python
python与pycharm有何区别
Jul 01 Python
python Matplotlib模块的使用
Sep 16 Python
python实现图片九宫格分割的示例
Apr 25 Python
Python OpenCV实现传统图片格式与base64转换
Jun 13 Python
python实现apahce网站日志分析示例
Apr 02 #Python
python实现数通设备端口监控示例
Apr 02 #Python
使用python解析xml成对应的html示例分享
Apr 02 #Python
Python爬虫框架Scrapy安装使用步骤
Apr 01 #Python
使用python绘制人人网好友关系图示例
Apr 01 #Python
python异步任务队列示例
Apr 01 #Python
用Python编程实现语音控制电脑
Apr 01 #Python
You might like
JAVA/JSP学习系列之七
2006/10/09 PHP
PHP教程 预定义变量
2009/10/23 PHP
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
PHP7匿名类用法分析
2016/09/26 PHP
thinkPHP框架中执行事务的方法示例
2018/05/31 PHP
CI框架教程之优化验证码机制详解【验证码辅助函数】
2019/04/16 PHP
YII2框架中actions的作用与使用方法示例
2020/03/13 PHP
用Javascript同时提交多个Web表单的方法
2009/12/26 Javascript
jquery 批量上传图片实现代码
2010/01/28 Javascript
JS 面向对象之神奇的prototype
2011/02/26 Javascript
关于jquery中全局函数each使用介绍
2013/12/10 Javascript
javascript实现数字验证码的简单实例
2014/02/10 Javascript
Javascript学习笔记之函数篇(四):arguments 对象
2014/11/23 Javascript
浅析2种JavaScript继承方式
2015/12/04 Javascript
JavaScript中 this 指向问题深度解析
2017/02/21 Javascript
浅析node应用的timing-attack安全漏洞
2018/02/28 Javascript
Vuepress 搭建带评论功能的静态博客的实现
2019/02/17 Javascript
validform表单验证的实现方法
2019/03/08 Javascript
微信小程序设置全局请求URL及封装wx.request请求操作示例
2019/04/02 Javascript
[44:40]2018DOTA2亚洲邀请赛3月30日 小组赛A组Liquid VS OG
2018/03/31 DOTA
简单介绍Python2.x版本中的cmp()方法的使用
2015/05/20 Python
详解Python中映射类型的内建函数和工厂函数
2015/08/19 Python
python 列表,数组,矩阵两两转换tolist()的实例
2018/04/04 Python
Python图像处理之gif动态图的解析与合成操作详解
2018/12/30 Python
python opencv 批量改变图片的尺寸大小的方法
2019/06/28 Python
python中eval与int的区别浅析
2019/08/11 Python
Python 找出出现次数超过数组长度一半的元素实例
2020/05/11 Python
最新版 Windows10上安装Python 3.8.5的步骤详解
2020/11/28 Python
手工制作的意大利礼服鞋:Ace Marks
2018/12/15 全球购物
党的群众路线教育实践活动对照检查材料思想汇报(党员篇)
2014/09/25 职场文书
业务员工作态度散漫检讨书
2014/11/02 职场文书
电力企业职工培训心得体会
2016/01/11 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
2019年教师节活动策划方案
2019/09/09 职场文书
html form表单基础入门案例讲解
2021/07/15 HTML / CSS
Python时间操作之pytz模块使用详解
2022/06/14 Python