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中使用socket发送HTTP请求数据接收不完整问题解决方法
Feb 04 Python
Python遍历某目录下的所有文件夹与文件路径
Mar 15 Python
python将回车作为输入内容的实例
Jun 23 Python
详解多线程Django程序耗尽数据库连接的问题
Oct 08 Python
python装饰器常见使用方法分析
Jun 26 Python
Python用字典构建多级菜单功能
Jul 11 Python
通过实例了解python property属性
Nov 01 Python
Python socket实现的文件下载器功能示例
Nov 15 Python
基于Python获取城市近7天天气预报
Nov 26 Python
python时间日期操作方法实例小结
Feb 06 Python
使用Django和Postgres进行全文搜索的实例代码
Feb 13 Python
python3的pip路径在哪
Jun 23 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
Terran剧情介绍
2020/03/14 星际争霸
php中一个有意思的日期逻辑处理
2012/03/25 PHP
用php制作简单分页(从数据库读取记录)的方法详解
2013/05/04 PHP
使用PHP编写发红包程序
2015/07/22 PHP
PHP扩展开发教程(总结)
2015/11/04 PHP
PHP命令行执行整合pathinfo模拟定时任务实例
2016/08/12 PHP
PHP实现找出链表中环的入口节点
2018/01/16 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
javascript json2 使用方法
2010/03/16 Javascript
jquery浏览器滚动加载技术实现方案
2014/06/03 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
2016/08/05 Javascript
jQuery实现表格文本框淡入更改值后淡出效果
2016/09/27 Javascript
vue使用better-scroll实现下拉刷新、上拉加载
2018/11/23 Javascript
15分钟上手vue3.0(小结)
2020/05/20 Javascript
jQuery弹框插件使用方法详解
2020/05/26 jQuery
[45:25]完美世界DOTA2联赛循环赛 PXG vs IO 第一场 11.06
2020/11/09 DOTA
Python之reload流程实例代码解析
2018/01/29 Python
Python采集代理ip并判断是否可用和定时更新的方法
2018/05/07 Python
Python读写zip压缩文件的方法
2018/08/29 Python
Python英文文本分词(无空格)模块wordninja的使用实例
2019/02/20 Python
Django 多表关联 存储 使用方法详解 ManyToManyField save
2019/08/09 Python
详解使用PyInstaller将Pygame库编写的小游戏程序打包为exe文件
2019/08/23 Python
python解析yaml文件过程详解
2019/08/30 Python
python通过nmap扫描在线设备并尝试AAA登录(实例代码)
2019/12/30 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
2020/03/25 Python
浅谈matplotlib中FigureCanvasXAgg的用法
2020/06/16 Python
python爬虫使用requests发送post请求示例详解
2020/08/05 Python
div或img图片高度随宽度自适应的方法
2020/02/06 HTML / CSS
美国综合购物商城:UnbeatableSale.com
2018/11/28 全球购物
The North Face北面德国官网:美国著名户外品牌
2018/12/12 全球购物
中专生职业生涯规划书范文
2013/12/29 职场文书
公司中层干部的自我评价分享
2014/03/01 职场文书
2014年保密工作总结
2014/11/22 职场文书
GitHub上77.9K的Axios项目有哪些值得借鉴的地方详析
2021/06/15 Javascript
MySQL系列之二 多实例配置
2021/07/02 MySQL
python Django框架快速入门教程(后台管理)
2021/07/21 Python