您的位置:首页 > 编程语言 > Python开发

Sigar之python的基本使用

2015-11-05 11:41 513 查看
Sigar是System Information Gatherer And Reporter的缩写。

Sigar API提供了一系列可移植的接口用来收集操作系统信息,诸如,

1. System memory, swap, cpu, load average, uptime, logins
2. Per-process memory, cpu, credential info, state, arguments, environment, open files
3. File system detection and metrics
4. Network interface detection, configuration info and metrics
5. TCP and UDP connection tables
6. Network route table


好了,就介绍这么多吧。接下来看看如何在CentOS6.5上完成安装并使用呢?
安装过程很简单,需要安装epel的yum源。

wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm rpm -ivh epel-release-6-8.noarch.rpm

yum install gcc
yum install python-devel
yum install sigar sigar-devel

git clone git://github.com/hyperic/sigar.git sigar.git
cd sigar.git/
cd bindings/python/
python setup.py install


安装完毕,进行简单的验证,如
[root@localhost examples]# python
Python 2.6.6 (r266:84292, Jul 23 2015, 15:22:56)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-11)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sigar
>>>
由上面的输出,可以看到sigar已经安装完毕。

接下来,写个简单的脚本看看,sigar模块在python的基本使用,脚本如下:
# cat ifconfig.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# ldczz2008@163.com

import os
import sigar

sg = sigar.open()

def format_size(size):
return sigar.format_size(size)

# iflist是一个元组,是本机的网卡列表
iflist = sg.net_interface_list()

# 循环得到每个网卡的参数信息
for ifname in iflist:
ifconfig = sg.net_interface_config(ifname)
flags    = ifconfig.flags()
encap    = ifconfig.type()
hwaddr   = ifconfig.hwaddr()
bcast    = ifconfig.broadcast()
addr4    = ifconfig.address()
nmask    = ifconfig.netmask()
mtu      = ifconfig.mtu()
metric   = ifconfig.metric()

if hwaddr == "00:00:00:00:00:00":
hwaddr = ""
else:
hwaddr = "HWaddr " + hwaddr

# 打印网卡基本信息
print "[ %s ], Link encap: %s, %s" % (ifname, encap, hwaddr)

print "inet addr:", addr4
print "Bcast:    ", bcast
print "Mask:     ", nmask
print "MTU:      ", mtu
print "Metric:   ", metric

# 获得网卡的状态值
# RX信息
# TX信息
ifstat = sg.net_interface_stat(ifname)

print "以下是网卡[ %s ]的RX统计信息" % ifname
print "\tRX packets:", ifstat.rx_packets()
print "\tErrors:    ", ifstat.rx_errors()
print "\tDropped:   ", ifstat.rx_dropped()
print "\tOverruns:  ", ifstat.rx_overruns()
print "\tFrame:     ", ifstat.rx_frame()

print "以下是网卡[ %s ]的TX统计信息" % ifname
print "\tTX packets:", ifstat.tx_packets()
print "\tErrors:    ", ifstat.tx_errors()
print "\tDropped:   ", ifstat.tx_dropped()
print "\tOverruns:  ", ifstat.tx_overruns()
print "\tCarrier:   ", ifstat.tx_carrier()

print "\tCollisions:", ifstat.tx_collisions()
print "\tRx bytes:  ", format_size(ifstat.rx_bytes())
print "\tTx bytes:  ", format_size(ifstat.tx_bytes())
print

sg.close()


运行效果为:
# python ifconfig.py
[ lo ], Link encap: Local Loopback,
inet addr: 127.0.0.1
Bcast:     0.0.0.0
Mask:      255.0.0.0
MTU:       16436
Metric:    1
以下是网卡[ lo ]的RX统计信息
RX packets: 2780
Errors:     0
Dropped:    0
Overruns:   0
Frame:      0
以下是网卡[ lo ]的TX统计信息
TX packets: 2780
Errors:     0
Dropped:    0
Overruns:   0
Carrier:    0
Collisions: 0
Rx bytes:   1.5M
Tx bytes:   1.5M

[ eth0 ], Link encap: Ethernet, HWaddr 00:00:00:AA:00:CC
inet addr: 192.168.0.122
Bcast:     192.168.0.255
Mask:      255.255.255.0
MTU:       1500
Metric:    1
以下是网卡[ eth0 ]的RX统计信息
RX packets: 224886
Errors:     0
Dropped:    0
Overruns:   0
Frame:      0
以下是网卡[ eth0 ]的TX统计信息
TX packets: 168626
Errors:     0
Dropped:    0
Overruns:   0
Carrier:    0
Collisions: 0
Rx bytes:   279M
Tx bytes:    14M


怎么样?不是很难?
:-)

本文出自 “固态U盘” 博客,请务必保留此出处http://lavenliu.blog.51cto.com/5060944/1709932
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: