python实现巡检系统(solaris)示例
admin
2023-07-31 02:07:10
0

使用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\’\’\’))  #

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
python清除字符串里非数字... 本文实例讲述了python清除字符串里非数字字符的方法。分享给大家供大家参考。具体如下: impor...