机器信息采集脚本(python)
源代码位置:
https://github.com/caidao/ugetinfo-1.0.0 (希望大家能多多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)、依赖的库
windows系统需要安装WMI库 下载地址:
https://pypi.python.org/pypi/WMI/#downloads 这个库在安装之前要安装pywin32
(2)、命令行解析模块 optparse
功能强大,且易于使用,可以方便地生成标准的、符合Unix/Posix规范的命令行说明。
文档说明中文翻译:http://blog.csdn.net/caidaoqq/article/details/44706005(英语水平有限)
(3)windows系统信息
WMI 最初于1998年作为一个附加组件与 Windows NT 4.0 Service Pack 4 一起发行,是内置在Windows 2000、 Windows XP和Windows Server 2003 系列操作系统中核心的管理支持技术。基于由 Distributed Management Task Force (DMTF) 所监督的业界标准,WMI是一种规范和基础结构,通过它可以访问、配置、管理和监视几乎所有的Windows资源。大多用户习惯于使用众多的图形化管理工 具来管理Windows资源,在WMI之前这些工具都是通过 Win32应用程序编程接口(Application ProgrammingInterfaces,API)来访问和管理Windows资源的。只要你熟悉系统编程你就知道API有多么重要。但是大多数脚本 语言都不能直接调用Win32 API,WMI的出现使得系统管理员可以通过一种简便的方法即利用常见的脚本语言实现常用的系统管理任务。利用WMI需要和脚本如WSH和VBScript结合起来,可以实现的功能大家可以看微软的MSDN文档。
因此基本上windows系统能表现出来,你都可以通过这个模块获取,具体的可参考下面代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
try
:
import
wmi
import
win32api
except
ImportError:
wmi =
None
import
sys,platform
import
subprocess
import
os
def
get_system_info(c,sys):
if
sys ==
"Windows"
:
for
sys
in
c.Win32_OperatingSystem():
print
"Version :\t%s"
% sys.Caption.encode(
"GBK"
)
print
"Vernum :\t%s"
% sys.BuildNumber
def
get_memory_info(c,sys):
if
sys ==
"Windows"
:
for
mem
in
c.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
/
1024
print
"TotalPhysicalMemory :"
+
'\t'
+ str(MemTotal) +
"M"
#tmpdict ["MemFree"] = int( sys[0].FreePhysicalMemory)/1024
SwapTotal = int(pfu[
0
].AllocatedBaseSize)
print
"SwapTotal :"
+
'\t'
+ str(SwapTotal) +
"M"
#tmpdict ["SwapFree"] = int( pfu[0].AllocatedBaseSize - pfu[0].CurrentUsage)
def
get_disk_info(c,sys,infolist):
|