zl程序教程

您现在的位置是:首页 >  后端

当前栏目

python实现巡检系统(solaris)示例

Python系统 实现 示例 巡检 Solaris
2023-06-13 09:15:24 时间

使用python+shell编写,是一个简易solaris系统巡检程序

复制代码代码如下:


#!/usr/bin/python-u
#-*-coding:utf-8-*-
"""
程序:solaris_status.py
author:gyh9711
功能:
 系统状态信息获取

语言: 
 sh+python

注意:
 部分调用命令需要用到root权限

测试情况:
 系统版本:solaris10系统测试ok 
 测试服务器型号:sun69006800v445v440M3000M5000
内容:

"""
importtime
importsys
importos
importre
#importpprint

defgetNow():
 returntime.strftime("%Y-%m-%d%H:%M:%S",time.localtime())

defputs(mess,_type="print"):

 if_type=="log":
  sys.stdout.write("[%s]%s\n"%(getNow(),mess))
 else:
  sys.stdout.write("%s\n"%mess)
 #pprint.pprint(mess)

defgetCommand(cmd):
 return[t.rstrip()fortinos.popen(cmd).readlines()]

#通过系统状态信息:

#系统基本情况
puts("="*60)
puts("检查时间%s"%getNow())
puts("-"*60)
puts("\n系统基本信息")
foriingetCommand("showrev"):
 puts(i)
puts("="*60)
puts("\n")
puts("主机名称:%s"%getCommand("hostname")[0])
puts("处理器core数:%s"%getCommand("mpstat|awk"END{printNR-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)
foriinpsAll:
 _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("vmstat12|tail-1|awk"{print100-$22}"")[0])
puts("内存使用情况:%s%%总大小:%s[M]"%(getCommand("""vmstat12|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))

foriingetCommand("""awk"{if($3!=""){print$3}}"/etc/vfstab|egrep-v"mount|to|-"|xargsdf-h"""):
 puts(i)
puts("\n%s%s%s\n"%("="*30,"网络情况","="*30))


puts("网络接口状态")
foriingetCommand("""foriin`ifconfig-a|egrep"^{hme|qfe|ge|ce|eri|bge|nge|e1000g}"|cut-d:-f1`;do/sbin/dladmshow-dev$i;done"""):
 puts(i)
puts("\n网络接口IP及数据进出情况")
foriingetCommand("netstat-in"):
 puts(i)

puts("\n网络接口流量情况")
foriingetCommand("""foriin`ifconfig-a|egrep"^{hme|qfe|ge|ce|eri|bge|nge|e1000g}"|cut-d:-f1`;donetstat-I$i;done"""):
 puts(i)
puts("\n网络ARP缓存信息")
foriingetCommand("netstat-anp"):
 puts(i)
puts("\n")
puts("\n路由表情况")
foriingetCommand("netstat-rn"):
 puts(i)
puts("\n")

puts("\n%s%s%s\n"%("="*30,"系统主要服务及状态[svcs]","="*30))
foriingetCommand("""svcs"""):
 puts(i)
puts("\n%s%s%s\n"%("="*30,"服务硬件状态[prtdiag]","="*30))
foriingetCommand("""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("""vmstat12"""))
#puts(getCommand("""swap-s"""))


#=================磁盘IO情况=================
#puts(getCommand("""iostat-xtc""")) #