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之不要红头文件(2)
Sep 28 Python
Python中字符串对齐方法介绍
May 21 Python
MAC中PyCharm设置python3解释器
Dec 15 Python
scrapy爬虫完整实例
Jan 25 Python
Python实现合并同一个文件夹下所有txt文件的方法示例
Apr 26 Python
Python实现调用另一个路径下py文件中的函数方法总结
Jun 07 Python
python中使用psutil查看内存占用的情况
Jun 11 Python
Python中捕获键盘的方式详解
Mar 28 Python
python 猴子补丁(monkey patch)
Jun 26 Python
检测python爬虫时是否代理ip伪装成功的方法
Jul 12 Python
pytorch 使用加载训练好的模型做inference
Feb 20 Python
python munch库的使用解析
May 25 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编程中的常见漏洞和代码实例
2014/08/06 PHP
php使用session二维数组实例
2014/11/06 PHP
php利用fsockopen GET/POST提交表单及上传文件
2017/05/22 PHP
ThinkPHP开发--使用七牛云储存
2017/09/14 PHP
PDO::exec讲解
2019/01/28 PHP
php装饰者模式简单应用案例分析
2019/10/23 PHP
通过Javascript创建一个选择文件的对话框代码
2012/06/16 Javascript
jQuery实现鼠标移到元素上动态提示消息框效果
2013/10/20 Javascript
javascript中setTimeout的问题解决方法
2014/05/08 Javascript
javascript中字符串拼接详解
2014/09/26 Javascript
javascript实现无限级select联动菜单
2015/01/02 Javascript
Javascript中的匿名函数与封装介绍
2015/03/15 Javascript
JS获取当前使用的浏览器名字以及版本号实现方法
2016/08/19 Javascript
详解vue组件化开发-vuex状态管理库
2017/04/10 Javascript
node.js实现的装饰者模式示例
2017/09/06 Javascript
JS数组求和的常用方法实例小结
2019/01/07 Javascript
详解element-ui表格中勾选checkbox,高亮当前行
2019/09/02 Javascript
JS实现动态星空背景效果
2019/11/01 Javascript
详解微信小程序之提高应用速度小技巧
2020/01/07 Javascript
解决echarts中横坐标值显示不全(自动隐藏)问题
2020/07/20 Javascript
[01:04:35]2018DOTA2亚洲邀请赛 4.3 突围赛 Secret vs VG 第一场
2018/04/04 DOTA
Python3读取UTF-8文件及统计文件行数的方法
2015/05/22 Python
Python中的fileinput模块的简单实用示例
2015/07/09 Python
Python实现使用卷积提取图片轮廓功能示例
2018/05/12 Python
python实现弹跳小球
2019/05/13 Python
pycharm访问mysql数据库的方法步骤
2019/06/18 Python
Python单元测试工具doctest和unittest使用解析
2019/09/02 Python
python创建n行m列数组示例
2019/12/02 Python
python+adb+monkey实现Rom稳定性测试详解
2020/04/23 Python
Python 3.9的到来到底是意味着什么
2020/10/14 Python
python空元组在all中返回结果详解
2020/12/15 Python
静态成员和非静态成员的区别
2012/05/12 面试题
四种会话跟踪技术
2015/05/20 面试题
2014年教研工作总结
2014/12/06 职场文书
二年级数学教学反思
2016/02/16 职场文书
python数据可视化JupyterLab实用扩展程序Mito
2021/11/20 Python