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基类函数的重载与调用实例分析
Jan 12 Python
python实现基于两张图片生成圆角图标效果的方法
Mar 26 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
Jul 30 Python
Python Socket编程详细介绍
Mar 23 Python
python类的继承实例详解
Mar 30 Python
python爬虫之BeautifulSoup 使用select方法详解
Oct 23 Python
深入理解Python中range和xrange的区别
Nov 26 Python
Python实现二维数组输出为图片
Apr 03 Python
Flask实现图片的上传、下载及展示示例代码
Aug 03 Python
详解Python的三种可变参数
May 08 Python
将matplotlib绘图嵌入pyqt的方法示例
Jan 08 Python
Python如何用filter函数筛选数据
Mar 05 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
php查询内存信息操作示例
2019/05/09 PHP
php传值和传引用的区别点总结
2019/11/19 PHP
有趣的javascript数组定义方法
2010/09/10 Javascript
asm.js使用示例代码
2013/11/28 Javascript
javascript函数作用域学习示例(js作用域)
2014/01/13 Javascript
使用javascript实现json数据以csv格式下载
2015/01/09 Javascript
transport.js和jquery冲突问题的解决方法
2015/02/10 Javascript
javaScript中with函数用法实例分析
2015/06/08 Javascript
JavaScript实现页面无操作倒计时退出
2016/10/22 Javascript
js返回顶部实例分享
2016/12/21 Javascript
详解Vue-基本标签和自定义控件
2017/03/24 Javascript
vue通过点击事件读取音频文件的方法
2018/05/30 Javascript
解析vue data不可以使用箭头函数问题
2018/07/03 Javascript
JS实现简单的抽奖转盘效果示例
2019/02/16 Javascript
angular 服务随记小结
2019/05/06 Javascript
ES6数组与对象的解构赋值详解
2019/06/14 Javascript
python通过ElementTree操作XML获取结点读取属性美化XML
2013/12/02 Python
python的多重继承的理解
2017/08/06 Python
微信跳一跳python辅助脚本(总结)
2018/01/11 Python
pandas中的DataFrame按指定顺序输出所有列的方法
2018/04/10 Python
Python安装与基本数据类型教程详解
2019/05/29 Python
Python进阶之使用selenium爬取淘宝商品信息功能示例
2019/09/16 Python
Python爬虫之urllib基础用法教程
2019/10/12 Python
使用Python发现隐藏的wifi
2020/03/04 Python
Python matplotlib修改默认字体的操作
2020/03/05 Python
python 发送get请求接口详解
2020/11/17 Python
python中numpy.empty()函数实例讲解
2021/02/05 Python
详解CSS3中强大的filter(滤镜)属性
2017/06/29 HTML / CSS
波兰补充商店:Muscle Power
2018/10/29 全球购物
经典大学生求职信范文
2014/01/06 职场文书
员工廉洁自律承诺书
2014/05/26 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
2016年大学生暑期社会实践方案
2015/11/26 职场文书
十二月早安励志心语大全
2019/12/03 职场文书
C站最全Python标准库总结,你想要的都在这里
2021/07/03 Python
游戏《铁拳》动画化!2022年年内播出
2022/03/21 日漫