Research
Security News
Malicious npm Package Targets Solana Developers and Hijacks Funds
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Python tools for managing ranges of VLANs, TCP/UDP ports, IP protocols, Interfaces
.. image:: https://img.shields.io/pypi/v/netports.svg :target: https://pypi.python.org/pypi/netports .. image:: https://img.shields.io/pypi/pyversions/netports.svg :target: https://pypi.python.org/pypi/netports
Python tools for managing ranges of VLANs, TCP/UDP ports, IP protocols, Interfaces Recommended for scripting in telecommunications networks.
Python >=3.8
Install the package from pypi.org release
.. code:: bash
pip install netports
or install the package from github.com release
.. code:: bash
pip install https://github.com/vladimirs-git/netports/archive/refs/tags/0.16.0.tar.gz
or install the package from github.com repository
.. code:: bash
pip install git+https://github.com/vladimirs-git/netports@0.16.0
.. contents:: Contents :local:
check_port() ............ check_port(port, strict) Check TCP/UDP port in the range 1 to 65535.
=============== =========================== ============================================================================
Parameter Type Description
=============== =========================== ============================================================================
port int The TCP/UDP port that needs to be checked.
strict bool True - raise NetportsValueError if the port is invalid, False - return False if the port is invalid. Default is False
.
=============== =========================== ============================================================================
Return bool True - If the port is in the valid range of 1 to 65535, False - otherwise. Raises TypeError If the port is not integer. NetportsValueError If strict=True and the port is outside the valid range.
check_port() ............ check_ports(ports, strict) heck TCP/UDP ports in the range 1 to 65535.
=============== =========================== ============================================================================
Parameter Type Description
=============== =========================== ============================================================================
ports List[int] The TCP/UDP ports that needs to be checked
strict bool True - raise NetportsValueError if any in the ports is invalid, False - return False if the port is invalid. Default is False
.
=============== =========================== ============================================================================
Return bool True - if all ports is in the valid range of 1 to 65535, False - otherwise. Raises TypeError If any in the ports is not integer. NetportsValueError If strict=True and any in the ports is outside the valid range.
itcp() ...... itcp(items, verbose, all) Integer TCP/UDP Ports. Sorting TCP/UDP ports and removing duplicates
=============== =========================== ============================================================================ Parameter Type Description =============== =========================== ============================================================================ items str, List[int], List[str] Range of TCP/UDP ports, can be unsorted and with duplicates verbose bool True - all ports in verbose mode: [1, 2, ..., 65535], False - all ports in brief mode: [-1], to save RAM (default) all bool True - Returns all TCP/UDP ports: [1, 2, ..., 65535], or [-1] for verbose=False =============== =========================== ============================================================================
Return List[int] of unique sorted TCP/UDP ports Raises NetportsValueError if TCP/UDP ports are outside valid range 1...65535
stcp() ...... stcp(items, verbose, all) String TCP/UDP ports. Sorting TCP/UDP ports and removing duplicates
=============== =========================== ============================================================================ Parameter Type Description =============== =========================== ============================================================================ items str, List[int], List[str] Range of TCP/UDP ports, can be unsorted and with duplicates verbose bool True - all ports in verbose mode: [1, 2, ..., 65535], False - all ports in brief mode: [-1], to save RAM (default) all bool True - Returns all TCP/UDP ports: "1-65535" =============== =========================== ============================================================================
Return str of unique sorted TCP/UDP ports Raises NetportsValueError if TCP/UDP ports are outside valid range 1...65535
Examples
./examples/tcp_udp.py
_
ivlan() ....... ivlan(items, verbose, all, splitter, range_splitter, platform) Sorting integer VLAN IDs and removing duplicates
=============== =========================== ============================================================================
Parameter Type Description
=============== =========================== ============================================================================
items str, List[int], List[str] Range of VLANs, can be unsorted and with duplicates
verbose bool True - all VLAN IDs in verbose mode: [1, 2, ..., 65535], False - all VLAN IDs in brief mode: [-1], to save RAM (default)
all bool True - Returns all VLAN IDs: [1, 2, ..., 4094], or [-1] for verbose=False
splitter str Separator character between items, by default ","
range_splitter str Separator between min and max numbers in range, by default "-"
platform str Set splitter
and range_splitter
to platform specific values. Defined: "cisco" (Cisco IOS), "hpe" (Hewlett Packard Enterprise).
=============== =========================== ============================================================================
Return List[int] of unique sorted VLANs Raises NetportsValueError if VLANs are outside valid range 1...4094
svlan() ....... svlan(items, verbose, all, splitter, range_splitter, platform) Sorting string VLANs and removing duplicates
=============== =========================== ============================================================================
Parameter Type Description
=============== =========================== ============================================================================
items str, List[int], List[str] Range of VLANs, can be unsorted and with duplicates
verbose bool True - all VLAN IDs in verbose mode: [1, 2, ..., 65535], False - all VLAN IDs in brief mode: [-1], to save RAM (default)
all bool True - Returns all VLAN IDs: "1-4094"
splitter str Separator character between items, by default ","
range_splitter str Separator between min and max numbers in range, by default "-"
platform str Set splitter
and range_splitter
to platform specific values. Defined: "cisco" (Cisco IOS), "hpe" (Hewlett Packard Enterprise).
=============== =========================== ============================================================================
Return str of unique sorted VLANs Raises NetportsValueError if VLANs are outside valid range 1...4094
Examples
./examples/vlan.py
_
IP_NAMES, IP_NUMBERS ....................
Dictionary with known IP protocol names and IDs listed in https://en.wikipedia.org/wiki/List_of_IP_protocol_numbers
iip() ..... iip(items, verbose, all, strict) Sorting IP protocol numbers and removing duplicates
=============== =========================== ============================================================================ Parameter Type Description =============== =========================== ============================================================================ items str, List[int], List[str] Range of IP protocol numbers, can be unsorted and with duplicates, "ip" - Return all IP protocol numbers: [0, 1, ..., 255] verbose bool True - all protocols in verbose mode: [0, 1, ..., 255], False - all protocols in brief mode: [-1], to save RAM (default) strict bool True - Raises NetportsValueError, if the protocol is unknown (default), False - Skips unknown protocols all bool True - Return all IP protocol numbers: [0, 1, ..., 255] =============== =========================== ============================================================================
Return List[int] of unique sorted IP protocol numbers Raises NetportsValueError if IP protocol numbers are outside valid range 0...255
sip() ..... sip(items, verbose, all) Soring string IP protocol numbers and removing duplicates
=============== =========================== ============================================================================ Parameter Type Description =============== =========================== ============================================================================ items str, List[int], List[str] Range of IP protocol numbers, can be unsorted and with duplicates. "ip" - mean all numbers in range 0...255. verbose bool True - all protocols in verbose mode: [0, 1, ..., 255], False - all protocols in brief mode: [-1], to save RAM (default) strict bool True - Raises NetportsValueError, if the protocol is unknown (default), False - Skips unknown protocols all bool True - Return all IP protocol numbers: "0-255" =============== =========================== ============================================================================
Return str of unique sorted IP protocol numbers Raises NetportsValueError if IP protocol numbers are outside valid range 0...255
ip_pairs() .......... ip_pairs(items, strict) Splits items to IP protocol Number, Name and undefined-invalid protocols
=============== =========================== ============================================================================ Parameter Type Description =============== =========================== ============================================================================ items str, List[int], List[str] Range of IP protocol names and numbers, can be unsorted and with duplicates verbose bool True - all protocols in verbose mode: [0, 1, ..., 255], False - all protocols in brief mode: [-1], to save RAM (default) =============== =========================== ============================================================================
Return List[Tuple[int, str]] Pairs of IP protocol number and name, List[str] Undefined protocol names and invalid numbers
Examples
./examples/ip.py
_
Range()
.......
Range(items, splitter, range_splitter, strict)
An object that represents ports range as str and as List[int]
Object implements most of the set <https://www.w3schools.com/python/python_ref_set.asp>
_ and
list <https://www.w3schools.com/python/python_ref_list.asp>
_ methods that handle the Range.numbers attribute.
=============== =========================== ============================================================================ Parameter Type Description =============== =========================== ============================================================================ items str, List[int] Range of numbers. Numbers can be unsorted and duplicated. splitter str Separator character between items, by default "," range_splitter str Separator between min and max numbers in range, by default "-" strict bool True - Raise NetportsValueError, if in items is invalid item. False - Make Range without invalid items. By default True. =============== =========================== ============================================================================
Attributes demonstration
Range operators :::::::::::::::
Range object implements:
+
, -
=============================== =========================== ============================================================ Operator Return Description =============================== =========================== ============================================================ Range("1,4") + Range("3,5") Range("1,3-5") Add two objects Range("1-5") - Range("2") Range("1,3-5") Subtract two objects Range("1,3-5")[1] 3 Get number by index Range("1,3-5")[1:3] [3, 4] Get numbers by slice =============================== =========================== ============================================================
Range methods :::::::::::::
Range object implements most of set <https://www.w3schools.com/python/python_ref_set.asp>
_
and list <https://www.w3schools.com/python/python_ref_list.asp>
_ methods.
=================================== ==================================================================================== Method Description =================================== ==================================================================================== add(other) Adds other Range object to self append(number) Appends number to self clear() Removes all numbers from self copy() Returns a copy of self Range object difference(other) Returns the Range object of the difference between self and other Range difference_update(other) Removes other Range from self discard(number) Removes the specified number from self Range extend(numbers) Adds List[int] numbers to self index(number) Returns index of number, raises ValueError if the number is not present in range intersection(other) Returns Range which is the intersection of self and other Range intersection_update(other) Removes numbers of other Range in self, that are not present in other isdisjoint(other) Returns whether self numbers and other Range numbers have intersection or not issubset(other) Returns whether other Range numbers contains self numbers or not issuperset(other) Returns whether self Range numbers contains other Range numbers set or not pop() Removes and returns last number in Range, raises IndexError if list is empty or index is out of range remove(number) Removes the specified number from self Range, raises ValueError if the numbers is not present symmetric_difference(other) Returns Range object with the symmetric differences of self and other Range symmetric_difference_update(other) Inserts the symmetric differences from self Range and other Range update(other) Returns Range of the union of self Range and other Range =================================== ====================================================================================
Examples
./examples/range.py
_
parse_range() ............. parse_range(line, splitter, range_splitter) Parses range from line. Removes white spaces considering splitters. Sort numbers and removes duplicates.
=============== =========================== ============================================================================ Parameter Type Description =============== =========================== ============================================================================ line str Range of numbers, can be unsorted and with duplicates splitter str Separator character between items, by default "," range_splitter str Separator between min and max numbers in range, by default "-" =============== =========================== ============================================================================
Return Range object
inumbers() .......... inumbers(items, splitter, range_splitter) Sort integer numbers and removes duplicates
=============== =========================== ============================================================================ Parameter Type Description =============== =========================== ============================================================================ items str, List[int], List[str] Range of numbers, can be unsorted and with duplicates splitter str Separator character between items, by default "," range_splitter str Separator between min and max numbers in range, by default "-" =============== =========================== ============================================================================
Return List[int] of unique sorted numbers
snumbers() .......... snumbers(items, splitter, range_splitter) Sort string numbers and removes duplicates
=============== =========================== ============================================================================ Parameter Type Description =============== =========================== ============================================================================ items str, List[int], List[str] Range of numbers, can be unsorted and with duplicates splitter str Separator character between items, by default "," range_splitter str Separator between min and max numbers in range, by default "-" =============== =========================== ============================================================================
Return str of unique sorted numbers
Examples
./examples/numbers.py
_
generate_intfs() ................ generate_intfs(start, end, base) Generate list of Intf objects from start to end.
=========== ============ =========================================================================== Parameter Type Description =========== ============ =========================================================================== start str First interface name in the range. end str Last interface name in the range. base str Prefix of the interface name that needs to be added to each interface. =========== ============ ===========================================================================
Return List[Intf] List of generated Intf objects.
generate_names() ................ generate_names(start, end, base) Generate list of interface names from start to end.
=========== ============ =========================================================================== Parameter Type Description =========== ============ =========================================================================== start str First interface name in the range. end str Last interface name in the range. base str Prefix of the interface name that needs to be added to each interface. =========== ============ ===========================================================================
Return List[str] List of generated interface names.
is_port_base() .............. is_port_base(port, required, ignore) Check if the port has one of the required base, skipping base that are in the ignore list.
=========== ============ =========================================================================== Parameter Type Description =========== ============ =========================================================================== port str Port name that need to check. required List[str] Required base names (without ID), one of which should match with port base name. ignore List[str] Base names to ignore. =========== ============ ===========================================================================
Return bool True - if port base name matches with required, False - otherwise.
names_to_range() ................ names_to_range(names, fmt) Join list of interface names to range.
=========== ============ =========================================================================== Parameter Type Description =========== ============ =========================================================================== names List[str] List of interface names. fmt str Format option: "long" - Long names: ["interface Ethernet1/1-3"], "short" - Short names: ["Eth1/1/1-3"]. =========== ============ ===========================================================================
Return str Interface range.
range_to_intfs() ................ range_to_intfs(line, base) Split interface range to list of Intf objects.
=========== ============ =========================================================================== Parameter Type Description =========== ============ =========================================================================== line str Range of interfaces that need to be split. base str Prefix of the interface name that needs to be added to each interface. =========== ============ ===========================================================================
Return List[Intf] List of Intf objects.
range_to_names() ................ range_to_names(line) Split interface range to list of interface names.
=========== ============ =========================================================================== Parameter Type Description =========== ============ =========================================================================== line str Range of interfaces that need to be split. =========== ============ ===========================================================================
Return List[str] List of interface names.
sort_names() ............ sort_names(names, reverse) Sort interface names.
=============== =========================== ============================================================================ Parameter Type Description =============== =========================== ============================================================================ names List[str] Interface names that need to be sorted. reverse bool True - descending, False - ascending, default is False. =============== =========================== ============================================================================
Return List[str] Sorted interface names.
long_to_short() ............... long_to_short(device_type, key_lower, value_lower) Returns Interfaces map long-to-short, device_type specific
=============== =========================== ============================================================================ Parameter Type Description =============== =========================== ============================================================================ device_type str Netmiko device type key_lower bool True - keys lower-case, False - keys upper-case value_lower bool True - values lower-case, False - values upper-case =============== =========================== ============================================================================
Return Dict[str, str] Interfaces map
long_to_long() .............. long_to_long(device_type, key_lower, value_lower) Returns Interfaces map long-to-long, device_type specific
=============== =========================== ============================================================================ Parameter Type Description =============== =========================== ============================================================================ device_type str Netmiko device type key_lower bool True - keys lower-case, False - keys upper-case value_lower bool True - values lower-case, False - values upper-case =============== =========================== ============================================================================
Return Dict[str, str] Interfaces map
longs() ....... longs(device_type, value_lower) Returns long names of all interfaces
=============== =========================== ============================================================================ Parameter Type Description =============== =========================== ============================================================================ device_type str Netmiko device type value_lower bool True - values lower-case, False - values upper-case. Default is None, lower-case and upper-case. =============== =========================== ============================================================================
Return List[str] Long names of all interfaces
short_to_long() ............... short_to_long(device_type, key_lower, value_lower) Returns Interfaces map short-to-long, device_type specific
=============== =========================== ============================================================================ Parameter Type Description =============== =========================== ============================================================================ device_type str Netmiko device type key_lower bool True - keys lower-case, False - keys upper-case value_lower bool True - values lower-case, False - values upper-case =============== =========================== ============================================================================
Return Dict[str, str] Interfaces map
short_to_short() ................ short_to_short(device_type, key_lower, value_lower) Returns Interfaces map short-to-short, device_type specific
=============== =========================== ============================================================================ Parameter Type Description =============== =========================== ============================================================================ device_type str Netmiko device type key_lower bool True - keys lower-case, False - keys upper-case value_lower bool True - values lower-case, False - values upper-case =============== =========================== ============================================================================
Return Dict[str, str] Interfaces map
shorts() ........ shorts(device_type, value_lower) Returns short names of all interfaces
=============== =========================== ============================================================================ Parameter Type Description =============== =========================== ============================================================================ device_type str Netmiko device type value_lower bool True - values lower-case, False - values upper-case. Default is None, lower-case and upper-case. =============== =========================== ============================================================================
Return List[str] Short names of all interfaces
Intf() ...... Intf(line, device_type, splitter) An object of interface name, that can contain up to 4 indexes. Sorts the interfaces by indexes (not by alphabetic).
=============== ======= ============================================================================ Parameter Type Description =============== ======= ============================================================================ line str Interface name that can contain up to 4 indexes device_type str Netmiko device_type (default "") splitter str Separator of characters between indexes (default ",./:") =============== ======= ============================================================================
Mac() ..... Mac(line) An object representing a MAC address in different formats.
=============== ======= ============================================================================ Parameter Type Description =============== ======= ============================================================================ line str MAC address line hex str MAC address in hex format cisco str MAC address in Cisco format colon str MAC address in colon delimiter format integer int MAC address in integer format =============== ======= ============================================================================
Attributes ::::::::::
=============== ============ ======================================================================= Attributes Type Description =============== ============ ======================================================================= delimiters Interface all delimiters id0 str Interface name. Line without IDs id1 int Interface 1st ID id2 int Interface 2nd ID id3 int Interface 3rd ID id4 int Interface 4th ID ids Interface all IDs line str Interface line name str Interface name with IDs splitter str Separator of characters between indexes device_type str Netmiko device_type =============== ============ =======================================================================
last_idx() .......... last_idx() Index of last ID in interface line
all_names() ........... all_names() All variants of names: long, short, upper-case, lover-case. Device type specific
name_full() ........... name_full() Interface long name with IDs and with interface keyword
name_long() ........... name_long() Interface long name with IDs and without interface keyword
name_short() ............ name_short(replace) Interface short name with IDs, Device type specific
=========== =========================== ============================================================
Parameter Type Description
=========== =========================== ============================================================
replace List[Tuple[str, str]] Replace the default short name with the first one
that matches in the list of the replace
argument.
=========== =========================== ============================================================
Return str Interface short name.
part_after() ............ part_after(idx, splitter) Interface part after interested ID
=========== ============ =========================================================================== Parameter Type Description =========== ============ =========================================================================== idx int Interface index splitter bool True - Include splitter from edge, False - Skip splitter from edge =========== ============ ===========================================================================
Return str Part of the interface name after specified interface index
part_before() ............. part_before(idx, splitter) Interface part before interested ID
=========== ============ =========================================================================== Parameter Type Description =========== ============ =========================================================================== idx int Interface index splitter bool True - Include splitter from edge, False - Skip splitter from edge =========== ============ ===========================================================================
Return str Part of the interface name before specified interface index
Examples
./examples/intfs.py
_
SwVersion() ........... SwVersion(text) Parse the given version string and return SwVersion object who can compare (>, >=, <, <=) software versions of network devices: Cisco, FortiGate, HP, etc.
.. code:: python
import re
from netports import SwVersion
text = "Cisco IOS Software, C2960X Software (C2960X-UNIVERSALK9-M), Version 15.2(4)E10, ..."
text = re.search(r"Version (\S+),", text)[1]
version1 = SwVersion(text) # 15.2(4)E10
version2 = SwVersion("15.2(4)E11")
assert version1 < version2
assert version1 <= version2
assert not version1 > version2
assert not version1 >= version2
print(version1) # 15.2(4)e10
print(version2) # 15.2(4)e11
.. _./examples/tcp_udp.py
: ./examples/tcp_udp.py
.. _./examples/vlan.py
: ./examples/vlan.py
.. _./examples/ip.py
: ./examples/ip.py
.. _./examples/range.py
: ./examples/range.py
.. _./examples/numbers.py
: ./examples/numbers.py
.. _./examples/intfs.py
: ./examples/intfs.py
FAQs
Python tools for managing ranges of VLANs, TCP/UDP ports, IP protocols, Interfaces
We found that netports demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Research
Security News
A malicious npm package targets Solana developers, rerouting funds in 2% of transactions to a hardcoded address.
Security News
Research
Socket researchers have discovered malicious npm packages targeting crypto developers, stealing credentials and wallet data using spyware delivered through typosquats of popular cryptographic libraries.
Security News
Socket's package search now displays weekly downloads for npm packages, helping developers quickly assess popularity and make more informed decisions.