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文件和目录操作详解
Feb 08 Python
Python极简代码实现杨辉三角示例代码
Nov 15 Python
简单谈谈Python中的几种常见的数据类型
Feb 10 Python
Python基于matplotlib绘制栈式直方图的方法示例
Aug 09 Python
python购物车程序简单代码
Apr 18 Python
Python SMTP发送邮件遇到的一些问题及解决办法
Oct 24 Python
python 提取key 为中文的json 串方法
Dec 31 Python
python操作文件的参数整理
Jun 11 Python
python 使用装饰器并记录log的示例代码
Jul 12 Python
Python API自动化框架总结
Nov 12 Python
python打包生成so文件的实现
Oct 30 Python
Python学习开发之图形用户界面详解
Aug 23 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
全国FM电台频率大全 - 26 西藏自治区
2020/03/11 无线电
php 分页原理详解
2009/08/21 PHP
20个PHP常用类库小结
2011/09/11 PHP
php快速查找数据库中恶意代码的方法
2015/04/01 PHP
PHP SPL 被遗落的宝石【SPL应用浅析】
2018/04/20 PHP
thinkphp5修改view到根目录实例方法
2019/07/02 PHP
拖动Html元素集合 Drag and Drop any item
2006/12/22 Javascript
DOM操作一些常用的属性汇总
2015/03/13 Javascript
JavaScript获得url所有参数键值表的方法
2015/03/21 Javascript
在JavaScript中访问字符串的子串
2015/07/07 Javascript
JavaScript+html5 canvas制作的百花齐放效果完整实例
2016/01/26 Javascript
Jquery轮播效果实现过程解析
2016/03/30 Javascript
Active控件问题小结(附解决办法)
2016/06/09 Javascript
JQ图片文件上传之前预览功能的简单实例(分享)
2017/11/12 Javascript
JQuery实现table中tr上移下移的示例(超简单)
2018/01/08 jQuery
Vue 实现展开折叠效果的示例代码
2018/08/27 Javascript
详解NodeJs项目 CentOs linux服务器线上部署
2019/09/16 NodeJs
Node.js开发之套接字(socket)编程入门示例
2019/11/05 Javascript
vue实现用户长时间不操作自动退出登录功能的实现代码
2020/07/23 Javascript
[02:47]DOTA2亚洲邀请赛 HR战队出场宣传片
2015/02/07 DOTA
[50:24]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
让python的Cookie.py模块支持冒号做key的方法
2010/12/28 Python
python实现的一个p2p文件传输实例
2014/06/04 Python
使用python实现knn算法
2017/12/20 Python
Python底层封装实现方法详解
2020/01/22 Python
基于Python爬虫采集天气网实时信息
2020/06/05 Python
分享unittest单元测试框架中几种常用的用例加载方法
2020/12/02 Python
python多线程爬取西刺代理的示例代码
2021/01/30 Python
娇韵诗Clarins意大利官方网站:法国天然护肤品牌
2020/03/11 全球购物
2014年创卫实施方案
2014/02/18 职场文书
四风问题个人剖析材料
2014/10/07 职场文书
财务部岗位职责
2015/02/03 职场文书
网络营销实训总结
2015/08/03 职场文书
2016年优秀少先队员事迹材料
2016/02/26 职场文书
创业计划书之服装
2019/10/07 职场文书
Angular性能优化之第三方组件和懒加载技术
2021/05/10 Javascript