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简单实现阿拉伯数字和罗马数字的互相转换功能示例
Apr 17 Python
opencv实现图片模糊和锐化操作
Nov 19 Python
python使用requests模块实现爬取电影天堂最新电影信息
Apr 03 Python
Python3.5 Pandas模块之Series用法实例分析
Apr 23 Python
python 实现GUI(图形用户界面)编程详解
Jul 17 Python
Python更新所有已安装包的操作
Feb 13 Python
python读取多层嵌套文件夹中的文件实例
Feb 27 Python
利用python在excel中画图的实现方法
Mar 17 Python
PYcharm 激活方法(推荐)
Mar 23 Python
Python %r和%s区别代码实例解析
Apr 03 Python
python3中确保枚举值代码分析
Dec 02 Python
Python3 使用pip安装git并获取Yahoo金融数据的操作
Apr 08 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
Ajax实时验证用户名/邮箱等是否已经存在的代码打包
2011/12/01 PHP
php中通过curl模拟登陆discuz论坛的实现代码
2012/02/16 PHP
PHP加密技术的简单实现
2016/09/04 PHP
JavaScript 学习笔记(十四) 正则表达式
2010/01/22 Javascript
JavaScript 面向对象之命名空间
2010/05/04 Javascript
基于Jquery实现的一个图片滚动切换
2012/06/21 Javascript
js触发asp.net的Button的Onclick事件应用
2013/02/02 Javascript
JavaScript的setAttribute兼容性问题解决方法
2013/11/11 Javascript
jQuery.event兼容各浏览器的event详细解析
2013/12/18 Javascript
页面js遇到乱码问题的解决方法是和无法转码的情况
2014/04/30 Javascript
JavaScript学习小结之使用canvas画“哆啦A梦”时钟
2016/07/24 Javascript
微信小程序实现animation动画
2018/01/26 Javascript
jquery实现掷骰子小游戏
2019/10/24 jQuery
微信小程序wx.navigateTo方法里的events参数使用详情及场景
2020/01/07 Javascript
Javascript生成器(Generator)的介绍与使用
2021/01/31 Javascript
Vue包大小优化的实现(从1.72M到94K)
2021/02/18 Vue.js
Python导入oracle数据的方法
2015/07/10 Python
Python抓取手机号归属地信息示例代码
2016/11/28 Python
python opencv 图像尺寸变换方法
2018/04/02 Python
python找出一个列表中相同元素的多个索引实例
2019/06/11 Python
linux下python中文乱码解决方案详解
2019/08/28 Python
python 实现视频 图像帧提取
2019/12/10 Python
keras 自定义loss model.add_loss的使用详解
2020/06/22 Python
pytorch  网络参数 weight bias 初始化详解
2020/06/24 Python
python 5个顶级异步框架推荐
2020/09/09 Python
html5使用Drag事件编辑器拖拽上传图片的示例代码
2017/08/22 HTML / CSS
德国网上药房:Apotal
2017/04/04 全球购物
高二化学教学反思
2014/01/30 职场文书
电气自动化求职信
2014/06/24 职场文书
乡镇一岗双责责任书
2015/01/29 职场文书
2015新学期开学寄语
2015/02/26 职场文书
学生保证书格式
2015/02/27 职场文书
离婚起诉书怎么写
2015/05/19 职场文书
2016年校园重阳节广播稿
2015/12/18 职场文书
Java实战之用Swing实现通讯录管理系统
2021/06/13 Java/Android
一篇文章带你复习java知识点
2021/06/28 Java/Android