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

Source Code for Module DataCollector.CommandParsers.Linux_netstat_rn

 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  __doc__ = """CommandParser 
15   
16  CommandParser parses the output of a command to return a datamap 
17   
18  $Id: Uname_A.py,v 1.2 2003/10/01 23:40:51 edahl Exp $""" 
19   
20  __version__ = '$Revision: 1.2 $'[11:-2] 
21   
22  from Products.ZenUtils.IpUtil import isip, maskToBits 
23   
24  from CommandParser import CommandParser 
25   
26  TARGET=0 
27  GATEWAY=1 
28  NETMASK=2 
29  FLAGS=3 
30  INTERFACE=7 
31   
32 -class Linux_netstat_rn(CommandParser):
33 34 command = 'netstat -rn' 35 componentName = "os" 36
37 - def condition(self, device, log):
38 osver = device.os.getProductName() 39 return osver.find("Linux") > -1
40
41 - def parse(self, device, results, log):
42 log.info('Collecting routes for device %s' % device.id) 43 indirectOnly = getattr(device, 'zRouteMapCollectOnlyIndirect', False) 44 rm = self.newRelationshipMap("routes", "os") 45 rlines = results.split("\n") 46 for line in rlines: 47 aline = line.split() 48 if len(aline) != 8 or not isip(aline[0]): continue 49 route = self.newObjectMap("Products.ZenModel.IpRouteEntry") 50 51 route['routemask'] = maskToBits(aline[NETMASK]) 52 if route['routemask'] == 32: continue 53 54 if "G" in aline[FLAGS]: 55 route['routetype'] = 'indirect' 56 else: 57 route['routetype'] = 'direct' 58 if indirectOnly and route['routetype'] != 'indirect': 59 continue 60 61 route['id'] = aline[TARGET] 62 route['setTarget'] = route['id'] + "/" + str(route['routemask']) 63 route['id'] = route['id'] + "_" + str(route['routemask']) 64 route['setInterfaceName'] = aline[INTERFACE] 65 route['setNextHopIp'] = aline[GATEWAY] 66 rm.append(route) 67 return rm
68
69 - def description(self):
70 return "run netstat -an on server to build ipservices"
71