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通过RabbitMQ服务器实现交换机功能的实例教程
Jun 29 Python
解决Python 遍历字典时删除元素报异常的问题
Sep 11 Python
Python AES加密模块用法分析
May 22 Python
Python实现动态加载模块、类、函数的方法分析
Jul 18 Python
python如何在循环引用中管理内存
Mar 20 Python
python爬虫神器Pyppeteer入门及使用
Jul 13 Python
解决Jupyter Notebook使用parser.parse_args出现错误问题
Apr 20 Python
python针对Oracle常见查询操作实例分析
Apr 30 Python
Python 如何批量更新已安装的库
May 26 Python
解析Tensorflow之MNIST的使用
Jun 30 Python
利用Python实现斐波那契数列的方法实例
Jul 26 Python
如何使用flask将模型部署为服务
May 13 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+PHP 边学边练 之二 实例
2009/11/24 PHP
php图片水印添加、压缩、剪切的封装类实现
2020/04/18 PHP
PHP5.2中PDO的简单使用方法
2016/03/25 PHP
PHP简单遍历对象示例
2016/09/28 PHP
laravel按天、按小时,查询数据的实例
2019/10/09 PHP
用tip解决Ext列宽度不够的问题
2008/12/13 Javascript
DOM_window对象属性之--clipboardData对象操作代码
2011/02/03 Javascript
JS异常处理的一个想法(sofish)
2013/03/14 Javascript
Javascript实现返回上一页面并刷新的小例子
2013/12/11 Javascript
JavaScript中number转换成string介绍
2014/12/31 Javascript
js控件Kindeditor实现图片自动上传功能
2020/07/20 Javascript
JS实现数字格式千分位相互转换方法
2016/08/01 Javascript
微信小程序开发探究
2016/12/27 Javascript
jQuery实现table表格checkbox全选的方法分析
2018/07/04 jQuery
详解微信小程序调起键盘性能优化
2018/07/24 Javascript
vscode vue 文件模板的配置方法
2019/07/23 Javascript
js实现拖拽元素选择和删除
2020/08/25 Javascript
[54:51]Ti4 冒泡赛第二轮LGD vs C9 3
2014/07/14 DOTA
Python学习教程之常用的内置函数大全
2017/07/14 Python
Python的mysql数据库的更新如何实现
2017/07/31 Python
python PIL和CV对 图片的读取,显示,裁剪,保存实现方法
2019/08/07 Python
解决pycharm中的run和debug失效无法点击运行
2020/06/09 Python
浅析Python __name__ 是什么
2020/07/07 Python
call在Python中改进数列的实例讲解
2020/12/09 Python
CSS3实现渐变背景兼容问题
2020/05/06 HTML / CSS
Silk’n激光脱毛器官网:silkn.com
2016/10/06 全球购物
酒店保安领班职务说明书
2014/03/04 职场文书
协会周年庆活动方案
2014/08/26 职场文书
纪检干部个人对照检查材料
2014/09/23 职场文书
2014年小学工作总结
2014/11/26 职场文书
2014年设备管理工作总结
2014/11/26 职场文书
2015年普法依法治理工作总结
2015/05/26 职场文书
小学班主任研修日志
2015/11/13 职场文书
Java基于字符界面的简易收银台
2021/06/26 Java/Android
一文了解MySQL二级索引的查询过程
2022/02/24 MySQL
浅谈Redis的事件驱动模型
2022/05/30 Redis