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使用函数默认值实现函数静态变量的方法
Aug 18 Python
Python中统计函数运行耗时的方法
May 05 Python
python中print的不换行即时输出的快速解决方法
Jul 20 Python
对python_discover方法遍历所有执行的用例详解
Feb 13 Python
python三方库之requests的快速上手
Mar 04 Python
Python爬取知乎图片代码实现解析
Sep 17 Python
tensorflow 实现自定义layer并添加到计算图中
Feb 04 Python
Python AutoCAD 系统设置的实现方法
Apr 01 Python
TensorFlow固化模型的实现操作
May 26 Python
JAVA及PYTHON质数计算代码对比解析
Jun 10 Python
Selenium 安装和简单使用的实现
Dec 04 Python
教你使用pyinstaller打包Python教程
May 27 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中长文章分页显示实现代码
2012/09/29 PHP
php缓存技术详细总结
2013/08/07 PHP
php实现的百度搜索某地天气的小偷代码
2014/04/23 PHP
php使用FFmpeg接口获取视频的播放时长、码率、缩略图以及创建时间
2016/11/07 PHP
云网广告中的代码,提示出错,大家找找
2006/11/21 Javascript
javascript中如何处理引号编码"
2013/08/15 Javascript
js实现动画特效的文字链接鼠标悬停提示的方法
2015/03/02 Javascript
微信小程序 实现拖拽事件监听实例详解
2016/11/16 Javascript
js仿百度音乐全选操作
2017/01/13 Javascript
js eval函数使用,js对象和字符串互转实例
2017/03/06 Javascript
webpack教程之webpack.config.js配置文件
2017/07/05 Javascript
JavaScript 中的 this 简单规则
2017/09/19 Javascript
详细分析JS函数去抖和节流
2017/12/05 Javascript
Vue中v-show添加表达式的问题(判断是否显示)
2018/03/26 Javascript
mint-ui在vue中的使用示例
2018/04/05 Javascript
JS中this的指向以及call、apply的作用
2018/05/06 Javascript
vuex 解决报错this.$store.commit is not a function的方法
2018/12/17 Javascript
微信小程序的mpvue框架快速上手指南
2019/05/15 Javascript
解决layer.confirm选择完之后消息框不消失的问题
2019/09/16 Javascript
JS实现打砖块游戏
2020/02/14 Javascript
[57:12]完美世界DOTA2联赛循环赛 Inki vs Matador BO2第一场 10.31
2020/11/02 DOTA
python Django模板的使用方法
2016/01/14 Python
详解Python之unittest单元测试代码
2018/01/24 Python
关于python写入文件自动换行的问题
2018/06/23 Python
python3读取csv文件任意行列代码实例
2020/01/13 Python
Python使用socket_TCP实现小文件下载功能
2020/10/09 Python
CSS3中的opacity属性使用教程
2015/08/19 HTML / CSS
北京麒麟网信息技术有限公司网络游戏测试面试题
2013/09/28 面试题
入党自我鉴定范文
2013/10/04 职场文书
环境工程大学生个人的自我评价
2013/10/08 职场文书
班组长工作职责
2013/12/25 职场文书
汽车专业人才自我鉴定范文
2013/12/29 职场文书
股东授权委托书范本
2014/09/13 职场文书
MySQL中一条update语句是如何执行的
2022/03/16 MySQL
Java异常体系非正常停止和分类
2022/06/14 Java/Android
Python编写车票订购系统 Python实现快递收费系统
2022/08/14 Python