From: Mukund Sivaraman Date: Thu, 28 Jun 2012 07:19:36 +0000 (+0530) Subject: [2062] Show network information X-Git-Tag: trac2351_base~197^2~14 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=04fd11bf0539ea3ace1c103cf4488cb965aec659;p=thirdparty%2Fkea.git [2062] Show network information These details capture the output of tools without any post-parsing, as the support team will likely want to see all the raw data instead of a subset of it. --- diff --git a/src/bin/showtech/showtech.py.in b/src/bin/showtech/showtech.py.in index 599c6952e1..752a3319f9 100755 --- a/src/bin/showtech/showtech.py.in +++ b/src/bin/showtech/showtech.py.in @@ -27,7 +27,7 @@ def main(): s = SysInfo() print('BIND 10 ShowTech tool') - print('---------------------') + print('=====================') print('\nCPU'); print(' + Number of processors: ' + str(s.get_num_processors())) @@ -42,6 +42,7 @@ def main(): else: print(' + SMP kernel: no') print(' + Machine name: ' + s.get_platform_machine()) + print(' + Hostname: ' + s.get_platform_hostname()) print(' + Uptime: %d seconds' % (s.get_uptime())) l = s.get_loadavg() @@ -55,10 +56,25 @@ def main(): print(' + Swap total: %d bytes' % (s.get_mem_swap_total())) print(' + Swap free: %d bytes' % (s.get_mem_swap_free())) - print('\nNetwork'); - print(' + Hostname: ' + s.get_hostname()) + print('\n\nNetwork'); + print('-------\n'); - print('') + print('Interfaces') + print('~~~~~~~~~~\n') + + print(s.get_net_interfaces()) + + print('Routing table') + print('~~~~~~~~~~~~~\n') + print(s.get_net_routing_table()) + + print('Statistics') + print('~~~~~~~~~~\n') + print(s.get_net_stats()) + + print('Connections') + print('~~~~~~~~~~~\n') + print(s.get_net_connections()) if __name__ == '__main__': main() diff --git a/src/lib/python/isc/sysinfo/sysinfo.py b/src/lib/python/isc/sysinfo/sysinfo.py index 5506974a09..ae01fe8f8e 100644 --- a/src/lib/python/isc/sysinfo/sysinfo.py +++ b/src/lib/python/isc/sysinfo/sysinfo.py @@ -109,6 +109,53 @@ class SysInfo: if self._platform_distro is None: self._platform_distro = 'Unknown' + self._net_interfaces = None + + try: + s = subprocess.check_output(['ip', 'addr']) + self._net_interfaces = s.decode('utf-8') + except (subprocess.CalledProcessError, OSError): + pass + + if self._net_interfaces is None: + self._net_interfaces = 'Unknown' + + self._net_routing_table = None + + try: + s = subprocess.check_output(['ip', 'route']) + self._net_routing_table = s.decode('utf-8') + self._net_routing_table += '\n' + s = subprocess.check_output(['ip', '-f', 'inet6', 'route']) + self._net_routing_table += s.decode('utf-8') + except (subprocess.CalledProcessError, OSError): + pass + + if self._net_routing_table is None: + self._net_routing_table = 'Unknown' + + self._net_stats = None + + try: + s = subprocess.check_output(['netstat', '-s']) + self._net_stats = s.decode('utf-8') + except (subprocess.CalledProcessError, OSError): + pass + + if self._net_stats is None: + self._net_stats = 'Unknown' + + self._net_connections = None + + try: + s = subprocess.check_output(['netstat', '-apn']) + self._net_connections = s.decode('utf-8') + except (subprocess.CalledProcessError, OSError): + pass + + if self._net_connections is None: + self._net_connections = 'Unknown' + def get_num_processors(self): # This is the number of hyperthreads when hyper-threading is # used. This is not entirely portable, so we'll have to handle @@ -118,7 +165,7 @@ class SysInfo: def get_endianness(self): return self._endianness - def get_hostname(self): + def get_platform_hostname(self): return self._hostname def get_platform_name(self): @@ -159,3 +206,18 @@ class SysInfo: def get_mem_swap_free(self): return self._mem_swap_free + + def get_mem_swap_free(self): + return self._mem_swap_free + + def get_net_interfaces(self): + return self._net_interfaces + + def get_net_routing_table(self): + return self._net_routing_table + + def get_net_stats(self): + return self._net_stats + + def get_net_connections(self): + return self._net_connections