版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
..机器信息采集脚本〔python目录一、做什么的?2二、怎么做?4〔1、依赖的库4〔2、命令行解析模块optparse4〔3windows系统信息4〔4Linux系统信息74.1cpu信息74.2network信息94.3存储信息10〔5数据库信息11〔6已经测试环境117.SunOSsunv440不支持12标签:脚本,python,系统管理员,命令行,解析器,操作系统..源代码位置:〔希望大家能多多star收藏和fork改进程序一、做什么的?〔1主要用于采集服务器的相关信息,提供两种交互方式,一种是将服务器信息汇总至xml文件中,便于软件开发者使用〔图1;另一种方式通过命令行交互的方式,通过输入参数信息查询相关信息〔图2。图1图2〔2主要功能uname:操作系统版本、型号、处理器、机器名等CPU:型号、数量、使用率等network:网卡信息、MAC、IP、子网掩码、网络I/O等memory:内存大小、使用率、可用大小等存储:类型、大小、使用情况、磁盘I/O等数据库版本和安装路径:Mysql、oracle、sqlserver、sybase、db2二、怎么做?〔1、依赖的库psutil库下载地址:windows系统需要安装WMI库下载地址:/pypi/WMI/#downloads这个库在安装之前要安装pywin32〔2、命令行解析模块optparse功能强大,且易于使用,可以方便地生成标准的、符合Unix/Posix规范的命令行说明。文档说明中文翻译:/caidaoqq/article/details/44706005〔英语水平有限〔3windows系统信息WMI最初于1998年作为一个附加组件与WindowsNT4.0ServicePack4一起发行,是内置在Windows2000、WindowsXP和WindowsServer2003系列操作系统中核心的管理支持技术。基于由DistributedManagementTaskForce<DMTF>所监督的业界标准,WMI是一种规范和基础结构,通过它可以访问、配置、管理和监视几乎所有的Windows资源。大多用户习惯于使用众多的图形化管理工具来管理Windows资源,在WMI之前这些工具都是通过Win32应用程序编程接口<ApplicationProgrammingInterfaces,API>来访问和管理Windows资源的。只要你熟悉系统编程你就知道API有多么重要。但是大多数脚本语言都不能直接调用Win32API,WMI的出现使得系统管理员可以通过一种简便的方法即利用常见的脚本语言实现常用的系统管理任务。利用WMI需要和脚本如WSH和VBScript结合起来,可以实现的功能大家可以看微软的MSDN文档。因此基本上windows系统能表现出来,你都可以通过这个模块获取,具体的可参考下面代码:#!/usr/bin/envpython#-*-coding:utf-8-*-try:importwmiimportwin32apiexceptImportError:wmi=Noneimportsys,platformimportsubprocessimportosdefget_system_info<c,sys>:ifsys=="Windows":forsysinc.Win32_OperatingSystem<>:print"Version:\t%s"%sys.Caption.encode<"GBK">print"Vernum:\t%s"%sys.BuildNumberdefget_memory_info<c,sys>:ifsys=="Windows":formeminc.Win32_MemoryArray<>:print'\t'+str<mem.Caption>+'\t'+str<mem.Name>cs=c.Win32_ComputerSystem<>pfu=c.Win32_PageFileUsage<>MemTotal=int<cs[0].TotalPhysicalMemory>/1024/1024print"TotalPhysicalMemory:"+'\t'+str<MemTotal>+"M"#tmpdict["MemFree"]=int<sys[0].FreePhysicalMemory>/1024SwapTotal=int<pfu[0].AllocatedBaseSize>print"SwapTotal:"+'\t'+str<SwapTotal>+"M"#tmpdict["SwapFree"]=int<pfu[0].AllocatedBaseSize-pfu[0].CurrentUsage>defget_disk_info<c,sys,infolist>:ifsys=="Windows":tmpdict=dict<>tmplist=list<>forphysical_diskinc.Win32_DiskDrive<>:ifphysical_disk.Size:tmpdict["disk"]=str<physical_disk.Caption>tmpdict["size"]=str<long<physical_disk.Size>/1024/1024/1024>+"G"tmpdict["dev"]=str<physical_disk.MediaType>tmplist.append<tmpdict>printtmpdict["dev"]+":\t"+tmpdict["disk"]+':\t'+tmpdict["size"]infolist.append<tmplist>defget_cpu_info<c,sys,infolist>:ifsys=="Windows":tmplist=list<>tmpdict=dict<>tmpdict["CpuCores"]=0forcpuinc.Win32_Processor<>:tmpdict["modelname"]=cpu.Nametry:tmpdict["CpuCores"]=cpu.NumberOfCoresexcept:tmpdict["CpuCores"]+=1tmpdict["CpuClock"]=cpu.MaxClockSpeedprint'CpuType:\t'+str<tmpdict["modelname"]>print'CpuCores:\t'+str<tmpdict["CpuCores"]>tmplist.append<tmpdict>#infolist.append<tmplist>returntmplistdefget_network_info<c,sys,infolist>:ifsys=="Windows":tmplist=list<>forinterfaceinc.Win32_NetworkAdapterConfiguration<IPEnabled=1>:tmpdict=dict<>tmpdict["Description"]=interface.Descriptiontmpdict["IPAddress"]=interface.IPAddress[0]tmpdict["IPSubnet"]=interface.IPSubnet[0]tmpdict["MAC"]=interface.MACAddresstmplist.append<tmpdict>foriintmplist:printi["Description"]print'\t'+"MAC:"+'\t'+i["MAC"]print'\t'+"IPAddress:"+'\t'+i["IPAddress"]print'\t'+"IPSubnet:"+'\t'+i["IPSubnet"]infolist.append<tmplist>forinterfacePerfTCPinc.Win32_PerfRawData_Tcpip_TCPv4<>:print'TCPConnect:\t'+str<interfacePerfTCP.ConnectionsEstablished>defget_Proceess_cmd<c,process_name>:cmd=""forprocessinc.Win32_Process<>:temp=unicode<process.CommandLine>name=process.Nameifname.find<process_name>>=0:cmd=tempreturncmddefget_info<cmd>:p=subprocess.Popen<cmd,stdout=subprocess.PIPE,shell=False>municate<>[0].split<"\n">[0]if__name__=="__main__":sys=platform.system<>infolist=list<>c=wmi.WMI<>〔4Linux系统信息4.1cpu信息在linux系统中,提供了proc文件系统显示系统的软硬件信息.CPU的信息在启动的过程中被装载到虚拟目录/proc下的cpuinfo文件中,我们可以通过cat/proc/cpuinfo查看一下:这样我们只需要通过分析这个文件来获取cpu的相关信息,代码如下:efget_cpu_info<sys,infolist>:cpuinfo=dict<>procinfo=dict<>tempdict=dict<>templist=list<>ifsys=="Linux":'''Returntheinformationin/proc/cpuinfoasadictionaryinthefollowingformat:cpu_info['proc0']={...}cpu_info['proc1']={...}'''nprocs=0f=file<"/proc/cpuinfo",'r'>whileTrue:line=f.readline<>iflen<line>==0:breakifnotline.strip<>:#endofoneprocessorcpuinfo['proc%s'%nprocs]=procinfonprocs=nprocs+1#Resetprocinfo=dict<>else:iflen<line.split<':'>>==2:temp1=line.split<':'>[0].strip<>temp2=line.split<':'>[1].strip<>tempdict[temp1]=temp2printtemp1+":"+temp2else:procinfo[line.split<':'>[0].strip<>]=''templist.append<tempdict>#infolist.append<tempdict>returntemplist4.2network信息想实现一个类似ifconfig命令,查了一下资料没有找到好的方法,所以干脆就直接直接调用ifconfig。defget_network_info<sys1,infolist>:ifsys1=='Linux':tmplist=list<>ethlist=get_info<'ifconfig-s|grep-vIface|grep-vlo|awk\'{print$1}\''>.split<"\n">ethInfsys=get_info<"lspci|grepEthernet">.split<"\n">i=0forethiinethlist:ifethi!="":tmpdict=dict<>tmpdict["Description"]=ethInfsys[i].split<":">[2]tmpdict["IPAddress"]=get_info<'ifconfig%s|awk\'/inetaddr:/{print$2}\''%<ethi>>.split<":">[1]tmpdict["IPSubnet"]=get_info<'ifconfig%s|awk\'/Mask/{print$4}\''%<ethi>>.split<":">[1]tmpdict["MAC"]=get_info<'ifconfig%s|awk\'/HWaddr/{print$5}\''%<ethi>>tmplist.append<tmpdict>i=i+1foriintmplist:printi["Description"]print'\t'+"MAC:"+'\t'+i["MAC"]print'\t'+"IPAddress:"+'\t'+i["IPAddress"]print'\t'+"IPSubnet:"+'\t'+i["IPSubnet"]infolist.append<tmplist>4.3存储信息其实我首先想到的是fdisk这个命令,但是它有一个权限:无法支持超过2TB的硬盘分区,这个在当今情况下几乎是不可能。那么就用第二种分区命令了parted,由于我只想知道分区和大小,所以就在命令后面加了个过滤。如下后面再通过hdparm获取挂载盘的一些其他信息,代码如下:defget_disk_info<sys,infolist>:ifsys=="Linux":tmplist=list<>devlist=get_info<"parted-l|grepDisk">.split<"\n">fordevindevlist:ifdev!="":tmpdict=dict<>tmpdict["dev"]=dev.split<>[1].split<":">[0]tmpdict["size"]=dev.split<>[2]temp=get_info<"hdparm-I%s|awk\'/ModelNumber:/\'"%<tmpdict["dev"]>>iftemp!="":tmpdict["disk"]=temp.split<":">[1]else:tmpdict["disk"]=""tmplist.append<tmpdict>printtmpdict["dev"]+":\t"+tmpdict["disk"]+':\t'+tmpdict["size"]infolist.append<tmplist>〔5数据库信息原理其实很简
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中国工会十七大精神培训
- 电冰箱、空调器安装与维护电子教案 1.2 安装空调器
- 期中质量检测(1~4单元)(试题)2024-2025学年三年级上册数学人教版
- DB11T 1084-2014 观赏鱼养殖技术规范花罗汉鱼
- 文化产业示范园区创建验收标准
- 体操垫产业规划专项研究报告
- 婴儿用包被市场发展预测和趋势分析
- 咖啡豆烘烤机产业规划专项研究报告
- 卸妆用布市场发展预测和趋势分析
- 人教版英语八年级下册 期末Unit1-2综合练习题
- 初中音乐-黄河船夫曲教学设计学情分析教材分析课后反思
- 幼儿园中班教案《沙啦沙啦》含反思
- 生物实验报告高一上学期生物人教版必修1
- 小学思想政治-圆明园的毁灭教学设计学情分析教材分析课后反思
- 医院医务科科长岗位竞聘答辩PPT课件(带内容)
- 妊娠合并脂肪肝的护理
- 年产5亿粒胶囊生产车间工艺设计
- 渗透检测记录
- 《工业机器人应用与维护》专业人才培养方案
- 县委统战部部务会议事规则
- 西方近现代建筑史知到章节答案智慧树2023年天津大学
评论
0/150
提交评论