Gather information regarding CIDR -
1. Broadcast_address
2. CIDR
3. First_address
4. Last address
5. Max prefix len
6. Num addresses
7. Private
8. Version.
# STD imports
import ipaddress
import demistomock as demisto # noqa: F401
from CommonServerPython import * # noqa: F401
# Local imports
def ip_cidr(cidr: str) -> dict[str, str]:
"""Gather info regarding the supplied network
Args:
cidr(str): IPv4/CIDR or IPv6/CIDR
Returns:
dict: Entry context of single network
"""
try:
ip_network = ipaddress.ip_network(cidr, strict=False)
internal_ec = {
"CIDR": cidr,
"Version": ip_network.version,
"Private": ip_network.is_private,
"Max_prefix_len": ip_network.max_prefixlen,
"Num_addresses": ip_network.num_addresses,
"Broadcast_address": str(ip_network.broadcast_address),
"First_address": str(ip_network[0]),
"Last_address": str(ip_network[-1]),
}
return internal_ec # type: ignore
except ValueError:
return {}
def cidr_command(args: dict[str, str]) -> CommandResults: # pragma: no cover
"""Perform command on given IP/CIDR
Args:
args: argument from command runnning in demisto
Returns:
"""
cidr_list = argToList(args.get("cidr"))
ec = [ip_cidr(cidr) for cidr in cidr_list]
markdown = tableToMarkdown(name=f'CIDR - {args.get("cidr")}', t=ec, removeNull=True)
return CommandResults(outputs_prefix="Network", outputs=ec, readable_output=markdown)
def main(): # pragma: no cover
try:
return_results(cidr_command(demisto.args()))
except Exception as ex:
return_error(f"Failed to execute IPNetwork script. Error: {ex!s}")
if __name__ in ("__main__", "__builtin__", "builtins"):
main()
README
Gather information regarding CIDR -
1. Broadcast_address
2. CIDR
3. First_address
4. Last address
5. Max prefix len
6. Num addresses
7. Private
8. Version