Пример #1
0
 def get_arp_table(self):
     arp_table = []
     for entry in self.api('/ip/arp/print'):
         arp_table.append({
             'interface': entry['interface'],
             'mac': cast_mac(entry['mac-address']),
             'ip': cast_ip(entry['address']),
             'age': float(-1),
         })
     return arp_table
Пример #2
0
 def get_arp_table(self):
     arp_table = []
     for entry in self.api('/ip/arp/print'):
         arp_table.append(
             {
                 'interface': entry['interface'],
                 'mac': cast_mac(entry['mac-address']),
                 'ip': cast_ip(entry['address']),
                 'age': float(-1),
             }
         )
     return arp_table
Пример #3
0
    def ping(self,
             destination,
             source=C.PING_SOURCE,
             ttl=C.PING_TTL,
             timeout=C.PING_TIMEOUT,
             size=C.PING_SIZE,
             count=C.PING_COUNT,
             vrf=C.PING_VRF):
        params = {
            'count': count,
            'address': destination,
            'ttl': ttl,
            'size': size,
            'count': count,
        }
        if source:
            params['src-address'] = source
        if vrf:
            params['routing-instance'] = vrf

        results = self.api('/ping', **params)

        ping_results = {
            'probes_sent':
            max(row['sent'] for row in results),
            'packet_loss':
            max(row['packet-loss'] for row in results),
            'rtt_min':
            min(
                float(row.get('min-rtt', '-1ms').replace('ms', ''))
                for row in results),
            'rtt_max':
            max(
                float(row.get('max-rtt', '-1ms').replace('ms', ''))
                for row in results),
            # Last result has calculated avg
            'rtt_avg':
            float(results[-1:][0]['avg-rtt'].replace('ms', '')),
            'rtt_stddev':
            float(-1),
            'results': []
        }

        for row in results:
            ping_results['results'].append({
                'ip_address':
                cast_ip(row['host']),
                'rtt':
                float(row.get('time', '-1ms').replace('ms', '')),
            })

        return dict(success=ping_results)
Пример #4
0
def iface_addresses(rows, ifname):
    '''
    Return every found address and prefix length for given interface.

    example:
        {
        '192.168.1.1':
            {'prefix_length': 24}
        }
    '''
    found = (row['address'].split('/', 1) for row in rows if row['interface'] == ifname)
    pairs = ((cast_ip(address), int(prefix_length)) for address, prefix_length in found)
    return dict((address, dict(prefix_length=length)) for address, length in pairs)
Пример #5
0
def iface_addresses(rows, ifname):
    '''
    Return every found address and prefix length for given interface.

    example:
        {
        '192.168.1.1':
            {'prefix_length': 24}
        }
    '''
    found = (row['address'].split('/', 1) for row in rows
             if row['interface'] == ifname)
    pairs = ((cast_ip(address), int(prefix_length))
             for address, prefix_length in found)
    return dict(
        (address, dict(prefix_length=length)) for address, length in pairs)
Пример #6
0
    def ping(self,
             destination,
             source=C.PING_SOURCE,
             ttl=C.PING_TTL,
             timeout=C.PING_TIMEOUT,
             size=C.PING_SIZE,
             count=C.PING_COUNT,
             vrf=C.PING_VRF):
        params = {
                'count': count,
                'address': destination,
                'ttl': ttl,
                'size': size,
                'count': count,
        }
        if source:
            params['src-address'] = source
        if vrf:
            params['routing-instance'] = vrf

        results = self.api('/ping', **params)

        ping_results = {
            'probes_sent': max(row['sent'] for row in results),
            'packet_loss': max(row['packet-loss'] for row in results),
            'rtt_min': min(float(row.get('min-rtt', '-1ms').replace('ms', '')) for row in results),
            'rtt_max': max(float(row.get('max-rtt', '-1ms').replace('ms', '')) for row in results),
            # Last result has calculated avg
            'rtt_avg': float(results[-1:][0]['avg-rtt'].replace('ms', '')),
            'rtt_stddev': float(-1),
            'results': []
        }

        for row in results:
            ping_results['results'].append(
                {
                    'ip_address': cast_ip(row['host']),
                    'rtt': float(row.get('time', '-1ms').replace('ms', '')),
                }
            )

        return dict(success=ping_results)