Перейти к содержанию

Сетевоe

Библиотеки

Tips and tricks

Конвертируем питоновский список в строку-список (switchport) вланов для cisco и другого оборудования:

def vlan_list_to_string(vlans: list) -> str:
    """ Conevert list of VIDs to Cisco VLAN
   switchport string.
   Example: [2,10,13,14,15,16,17,18,19,20,3000]
   Result:  '2,10,13-20,3000'
    """
    vlans = sorted(set(vlans))

    st= ''
    l = len(vlans) - 1

    for i, v in enumerate(vlans):
        if i < l:
            if (v == vlans[i + 1] - 1):
                if i > 0:
                    if st[-1:][0] != '-':
                        st += str(v) + '-'
                else:
                    st += str(v) + '-'
            else:
                st += str(v) + ','
        else:
            st += str(v) + ','
    return st[:-1]

Конвертируем switchport строку в список:

def vlan_string_to_list(string: str) -> set:
    """ Convert switchport string to set of VIDs
    Example: '2-5,10,12-13'
    Result: (2,3,4,5,10,12,13)
    """
    row = []

    for v in str.split(','):
        sp = v.split('-')
        if len(sp) > 1:
            row += range(int(sp[0]),int(sp[1]) + 1)
        else:
            row.append(int(sp[0]))

    return set(sorted(row))