]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[2062] Show network information
authorMukund Sivaraman <muks@isc.org>
Thu, 28 Jun 2012 07:19:36 +0000 (12:49 +0530)
committerMukund Sivaraman <muks@isc.org>
Thu, 28 Jun 2012 07:20:51 +0000 (12:50 +0530)
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.

src/bin/showtech/showtech.py.in
src/lib/python/isc/sysinfo/sysinfo.py

index 599c6952e181c75677b1d44569df4b569190a3c5..752a3319f97e3938e24f71599cd070f9c42ec4a5 100755 (executable)
@@ -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()
index 5506974a09064a8a67fc698371ff956daa117072..ae01fe8f8e9179dd5a540676ffaacb8be1ce7a19 100644 (file)
@@ -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