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实现定时同步本机与北京时间的方法
Mar 24 Python
使用Python操作Elasticsearch数据索引的教程
Apr 08 Python
Python的Flask框架及Nginx实现静态文件访问限制功能
Jun 27 Python
Python中的heapq模块源码详析
Jan 08 Python
Python+pyplot绘制带文本标注的柱状图方法
Jul 08 Python
对Django外键关系的描述
Jul 26 Python
Python 实现训练集、测试集随机划分
Jan 08 Python
django的403/404/500错误自定义页面的配置方式
May 21 Python
keras导入weights方式
Jun 12 Python
python实现学生管理系统开发
Jul 24 Python
Python就将所有的英文单词首字母变成大写
Feb 12 Python
Python中的np.argmin()和np.argmax()函数用法
Jun 02 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
通过html表格发电子邮件
2006/10/09 PHP
php代码收集表单内容并写入文件的代码
2012/01/29 PHP
php根据指定位置和长度获得子字符串的方法
2015/03/17 PHP
PHP PDOStatement::fetchObject讲解
2019/02/01 PHP
解决 FireFox 下[使用event很麻烦] 的问题.
2006/08/22 Javascript
juqery 学习之四 筛选查找
2010/11/30 Javascript
使用js实现雪花飘落效果
2013/08/26 Javascript
Js Jquery创建一个弹出层可加载一个页面
2014/05/08 Javascript
分享20个提升网站界面体验的jQuery插件
2014/12/15 Javascript
jQuery插件kinMaxShow扩展效果用法实例
2015/05/04 Javascript
HTML5使用DeviceOrientation实现摇一摇功能
2015/06/05 Javascript
JS简单获取客户端IP地址的方法【调用搜狐接口】
2016/09/05 Javascript
手机移动端实现 jquery和HTML5 Canvas的幸运大奖盘特效
2016/12/06 Javascript
Javascript前端经典的面试题及答案
2017/03/14 Javascript
微信小程序与php 实现微信支付的简单实例
2017/06/23 Javascript
微信小程序结合Storage实现搜索历史效果
2019/05/18 Javascript
Nodejs封装类似express框架的路由实例详解
2020/01/05 NodeJs
windows系统下Python环境的搭建(Aptana Studio)
2017/03/06 Python
python实现判断一个字符串是否是合法IP地址的示例
2018/06/04 Python
详解Python with/as使用说明
2018/12/13 Python
在python中使用with打开多个文件的方法
2019/01/07 Python
Python编程中类与类的关系详解
2019/08/08 Python
python树的同构学习笔记
2019/09/14 Python
python 定义类时,实现内部方法的互相调用
2019/12/25 Python
python实现电子词典
2020/03/03 Python
安装多个版本的TensorFlow的方法步骤
2020/04/21 Python
HTML5页面音视频在微信和app下自动播放的实现方法
2016/10/20 HTML / CSS
HTML5实现文件断点续传的方法
2017/01/04 HTML / CSS
HTML5公共页面提取作为公用代码的方法
2020/06/30 HTML / CSS
英国时尚和家居用品零售商:Matalan
2021/02/28 全球购物
Shopbop中文官网:美国亚马逊旗下时尚购物网站
2020/12/15 全球购物
武汉英思工程科技有限公司–ORACLE面试测试题目
2012/04/30 面试题
企业消防安全制度
2014/02/02 职场文书
车队司机自我鉴定
2014/03/02 职场文书
学校法制宣传月活动总结
2014/07/03 职场文书
群众路线党员自我评议范文2014
2014/09/24 职场文书