1#!/usr/bin/env python 2 3r""" 4Network generic functions. 5 6""" 7 8import re 9import ipaddress 10from robot.libraries.BuiltIn import BuiltIn 11import var_funcs as vf 12 13 14def netmask_prefix_length(netmask): 15 r""" 16 Return the netmask prefix length. 17 18 Description of argument(s): 19 netmask Netmask value (e.g. "255.255.0.0", "255.255.255.0", 20 "255.252.0.0", etc.). 21 """ 22 23 # IP address netmask format: '0.0.0.0/255.255.252.0' 24 return ipaddress.ip_network('0.0.0.0/' + netmask).prefixlen 25 26 27def parse_nping_output(output): 28 r""" 29 Parse the output from the nping command and return as a dictionary. 30 31 Example of output value: 32 33 Starting Nping 0.6.47 ( http://nmap.org/nping ) at 2019-08-07 22:05 IST 34 SENT (0.0181s) TCP Source IP:37577 > 35 Destination IP:80 S ttl=64 id=39113 iplen=40 seq=629782493 win=1480 36 SENT (0.2189s) TCP Source IP:37577 > 37 Destination IP:80 S ttl=64 id=39113 iplen=40 seq=629782493 win=1480 38 RCVD (0.4120s) TCP Destination IP:80 > 39 Source IP:37577 SA ttl=49 id=0 iplen=44 seq=1078301364 win=5840 <mss 1380> 40 Max rtt: 193.010ms | Min rtt: 193.010ms | Avg rtt: 193.010ms 41 Raw packets sent: 2 (80B) | Rcvd: 1 (46B) | Lost: 1 (50.00%) 42 Nping done: 1 IP address pinged in 0.43 seconds 43 44 Example of data returned by this function: 45 46 nping_result: 47 [max_rtt]: 193.010ms 48 [min_rtt]: 193.010ms 49 [avg_rtt]: 193.010ms 50 [raw_packets_sent]: 2 (80B) 51 [rcvd]: 1 (46B) 52 [lost]: 1 (50.00%) 53 [percent_lost]: 50.00 54 55 Description of argument(s): 56 output The output obtained by running an nping 57 command. 58 """ 59 60 lines = output.split("\n") 61 # Obtain only the lines of interest. 62 lines = list(filter(lambda x: re.match(r"(Max rtt|Raw packets)", x), 63 lines)) 64 65 key_value_list = [] 66 for line in lines: 67 key_value_list += line.split("|") 68 nping_result = vf.key_value_list_to_dict(key_value_list) 69 # Extract percent_lost value from lost field. 70 nping_result['percent_lost'] = \ 71 float(nping_result['lost'].split(" ")[-1].strip("()%")) 72 return nping_result 73