Package DataCollector :: Package CommandParsers :: Module Linux_ifconfig
[hide private]
[frames] | no frames]

Source Code for Module DataCollector.CommandParsers.Linux_ifconfig

 1  ########################################################################### 
 2  # 
 3  # This program is part of Zenoss Core, an open source monitoring platform. 
 4  # Copyright (C) 2007, Zenoss Inc. 
 5  # 
 6  # This program is free software; you can redistribute it and/or modify it 
 7  # under the terms of the GNU General Public License version 2 as published by 
 8  # the Free Software Foundation. 
 9  # 
10  # For complete information please visit: http://www.zenoss.com/oss/ 
11  # 
12  ########################################################################### 
13   
14  import re 
15   
16  from CommandPlugin import CommandPlugin 
17   
18 -class Linux_ifconfig(CommandPlugin):
19 """ 20 Linux_ifconfig maps a linux ifconfig command to the interfaces relation. 21 """ 22 maptype = "InterfaceMap" 23 command = 'ifconfig' 24 compname = "os" 25 relname = "interfaces" 26 modname = "Products.ZenModel.IpInterface" 27 28 ifstart = re.compile( 29 "^(\S+)\s+Link encap:(.+)HWaddr (\S+)" 30 "|^(\S+)\s+Link encap:(.+)" 31 ).search 32 v4addr = re.compile("inet addr:(\S+).*Mask:(\S+)").search 33 flags = re.compile("^(.*) MTU:(\d+)\s+Metric:.*").search 34 35
36 - def condition(self, device, log):
37 osver = device.os.getProductName() 38 return osver.find("Linux") > -1
39 40
41 - def process(self, device, results, log):
42 log.info('Collecting interfaces for device %s' % device.id) 43 rm = self.relMap() 44 rlines = results.split("\n") 45 for line in rlines: 46 m = self.ifstart(line) 47 if m: 48 # start new interface and get name, type, and macaddress 49 iface = self.objectMap() 50 rm.append(iface) 51 if m.lastindex == 3: 52 name, itype, iface.macaddress=m.groups()[:3] 53 else: 54 name, itype = m.groups()[3:] 55 iface.type = itype.strip() 56 # Left iface.name in place, but added 57 # iface.title for consistency 58 iface.title = name 59 iface.name = name 60 iface.id = self.prepId(name) 61 continue 62 m = self.v4addr(line) 63 if m: 64 # get ip and netmask 65 ip, netmask = m.groups() 66 netmask = self.maskToBits(netmask) 67 iface.setIpAddresses = ["%s/%s" % (ip, netmask)] 68 m = self.flags(line) 69 if m: 70 # get adminStatus, operStatus, and mtu 71 flags, mtu = m.groups() 72 if "UP" in flags: iface.operStatus = 1 73 else: iface.operStatus = 2 74 if "RUNNING" in flags: iface.adminStatus = 1 75 else: iface.adminStatus = 2 76 iface.mtu = int(mtu) 77 return rm
78