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之网站的结构
Oct 24 Python
Python中对列表排序实例
Jan 04 Python
Python实现读写sqlite3数据库并将统计数据写入Excel的方法示例
Aug 07 Python
用 Python 连接 MySQL 的几种方式详解
Apr 04 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
Apr 21 Python
python实现比较文件内容异同
Jun 22 Python
python 数字类型和字符串类型的相互转换实例
Jul 17 Python
pytorch 可视化feature map的示例代码
Aug 20 Python
Python元组 tuple的概念与基本操作详解【定义、创建、访问、计数、推导式等】
Oct 30 Python
python实发邮件实例详解
Nov 11 Python
python 通过手机号识别出对应的微信性别(实例代码)
Dec 22 Python
Python中pyecharts安装及安装失败的解决方法
Feb 18 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
计数器详细设计
2006/10/09 PHP
浅谈PHP中new self()和new static()的区别
2017/08/11 PHP
laravel开发环境homestead搭建过程详解
2020/07/03 PHP
基于PHP的微信公众号的开发流程详解
2020/08/07 PHP
基于jQuery的history历史记录插件
2010/12/11 Javascript
使用jQuery validate 验证注册表单实例演示
2013/03/25 Javascript
枚举的实现求得1-1000所有出现1的数字并计算出现1的个数
2013/09/10 Javascript
JS滚轮事件onmousewheel使用介绍
2013/11/01 Javascript
jQuery动态改变图片显示大小(修改版)的实现思路及代码
2013/12/24 Javascript
instanceof和typeof运算符的区别详解
2014/01/06 Javascript
JS父页面与子页面相互传值方法
2014/03/05 Javascript
js中数组的常用方法小结
2016/12/30 Javascript
angular2+nodejs实现图片上传功能
2017/03/27 NodeJs
详解使用vue脚手架工具搭建vue-webpack项目
2017/05/10 Javascript
JS实现websocket长轮询实时消息提示的效果
2017/10/10 Javascript
angularjs select 赋值 ng-options配置方法
2018/02/28 Javascript
微信小程序使用swiper组件实现层叠轮播图
2018/11/04 Javascript
[00:08]DOTA2勇士令状等级奖励“天外飞星”
2019/05/24 DOTA
python字典多键值及重复键值的使用方法(详解)
2016/10/31 Python
Python3 queue队列模块详细介绍
2018/01/05 Python
python进行两个表格对比的方法
2018/06/27 Python
python selenium firefox使用详解
2019/02/26 Python
基于 Django 的手机管理系统实现过程详解
2019/08/16 Python
Python 实用技巧之利用Shell通配符做字符串匹配
2019/08/23 Python
TensorFlow实现从txt文件读取数据
2020/02/05 Python
Python带参数的装饰器运行原理解析
2020/06/09 Python
python读取excel数据并且画图的实现示例
2021/02/08 Python
财务主管自我鉴定
2014/01/17 职场文书
网上快餐厅创业计划书
2014/02/01 职场文书
党员干部公开承诺书
2014/03/26 职场文书
应届生求职信范文
2014/05/26 职场文书
2014年四风问题个人对照自查剖析材料
2014/09/15 职场文书
总经理司机岗位职责
2015/04/10 职场文书
超市主管竞聘书
2015/09/15 职场文书
关于Spring配置文件加载方式变化引发的异常详解
2022/01/18 Java/Android
MySQL GTID复制的具体使用
2022/05/20 MySQL