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编写一个国际象棋AI程序
Nov 28 Python
Python实现telnet服务器的方法
Jul 10 Python
Python下载指定页面上图片的方法
May 12 Python
使用Python的Flask框架构建大型Web应用程序的结构示例
Jun 04 Python
Python pyinotify日志监控系统处理日志的方法
Mar 08 Python
python学生管理系统代码实现
Apr 05 Python
Selenium鼠标与键盘事件常用操作方法示例
Aug 13 Python
python编写计算器功能
Oct 25 Python
python实现用类读取文件数据并计算矩形面积
Jan 18 Python
使用python执行shell脚本 并动态传参 及subprocess的使用详解
Mar 06 Python
宝塔面板成功部署Django项目流程(图文)
Jun 22 Python
只用40行Python代码就能写出pdf转word小工具
May 31 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环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
2007/03/16 PHP
Optimizer与Debugger兼容性问题的解决方法
2008/12/01 PHP
3种php生成唯一id的方法
2015/11/23 PHP
Yii2针对游客、用户防范规则和限制的解决方法分析
2016/10/08 PHP
Alliance vs Liquid BO3 第一场2.13
2021/03/10 DOTA
用js实现多域名不同文件的调用方法
2007/01/12 Javascript
jquery api参考 visualjquery 中国线路 速度快
2007/11/30 Javascript
jquery 得到当前页面高度和宽度的两个函数
2010/02/21 Javascript
jQuery.Validate 使用笔记(jQuery Validation范例 )
2010/06/25 Javascript
下载文件个别浏览器文件名乱码解决办法
2013/03/19 Javascript
js获取指定的cookie的具体实现
2014/02/20 Javascript
jquery遍历标签中自定义的属性方法
2016/09/17 Javascript
微信小程序 弹框和模态框实现代码
2017/03/10 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
为什么我们要做三份 Webpack 配置文件
2017/09/18 Javascript
tangram.js库实现js类的方式实例分析
2018/01/06 Javascript
详解React开发必不可少的eslint配置
2018/02/05 Javascript
vue+iview+less+echarts实战项目总结
2018/02/22 Javascript
JavaScript设计模式之代理模式实例分析
2019/01/16 Javascript
原生js实现获取form表单数据代码实例
2019/03/27 Javascript
微信小程序获取用户信息及手机号(后端TP5.0)
2019/09/12 Javascript
ant-design-vue 时间选择器赋值默认时间的操作
2020/10/27 Javascript
vue+iview实现文件上传
2020/11/17 Vue.js
python对象及面向对象技术详解
2016/07/19 Python
Python实现简单遗传算法(SGA)
2018/01/29 Python
Django框架视图层URL映射与反向解析实例分析
2019/07/29 Python
windows、linux下打包Python3程序详细方法
2020/03/17 Python
通过实例解析python创建进程常用方法
2020/06/19 Python
3分钟看懂Python后端必须知道的Django的信号机制
2020/07/26 Python
详解Python3 定义一个跨越多行的字符串的多种方法
2020/09/06 Python
7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口
2013/02/04 HTML / CSS
法律专业应届本科毕业生求职信
2013/10/25 职场文书
财务会计专业个人求职信范本
2014/01/08 职场文书
环境监测与治理技术专业求职信
2014/07/06 职场文书
2014年企业工会工作总结
2014/11/12 职场文书
红旗渠导游词
2015/02/09 职场文书