CLI

ipwhois_cli.py and ipwhois_utils_cli.py are command line interfaces for the ipwhois library. When using pip to install ipwhois, the CLI scripts are installed to your Python environment Scripts directory.

  • ipwhois_cli.py has full ipwhois.py functionality.
  • ipwhois_utils_cli.py has full utils.py functionality.
  • The others (net.py, rdap.py, whois.py, nir.py, asn.py) will be included in a future release.

ipwhois_cli.py

Usage

ipwhois_cli.py [-h] [–whois] [–exclude_nir] [–json] [–hr]
[–show_name] [–colorize] [–timeout TIMEOUT] [–proxy_http “PROXY_HTTP”] [–proxy_https “PROXY_HTTPS”] [–disallow_permutations] [–inc_raw] [–retry_count RETRY_COUNT] [–asn_alts “ASN_ALTS”] [–asn_methods “ASN_METHODS”] [–extra_org_map “EXTRA_ORG_MAP”] [–depth COLOR_DEPTH] [–excluded_entities “EXCLUDED_ENTITIES”] [–bootstrap] [–rate_limit_timeout RATE_LIMIT_TIMEOUT] [–get_referral] [–extra_blacklist “EXTRA_BLACKLIST”] [–ignore_referral_errors] [–field_list “FIELD_LIST”] [–nir_field_list “NIR_FIELD_LIST”] –addr “IP”

ipwhois CLI interface

optional arguments:
-h, --help show this help message and exit
--whois Retrieve whois data via legacy Whois (port 43) instead of RDAP (default).
--exclude_nir Disable NIR whois lookups (JPNIC, KRNIC). This is the opposite of the ipwhois inc_nir, in order to enable inc_nir by default in the CLI.
--json Output results in JSON format.
Output options:
--hr If set, returns results with human readable key translations.
--show_name If this and –hr are set, the key name is shown in parentheses afterits short value
--colorize If set, colorizes the output using ANSI. Should work in most platform consoles.
IPWhois settings:
--timeout TIMEOUT
 The default timeout for socket connections in seconds.
--proxy_http PROXY_HTTP
 The proxy HTTP address passed to request.ProxyHandler. User auth can be passed like “http://user:pass@192.168.0.1:80
--proxy_https PROXY_HTTPS
 The proxy HTTPS address passed to request.ProxyHandler. User auth can be passed like “https://user:pass@192.168.0.1:443
--disallow_permutations
 Disable additional methods if DNS lookups to Cymru fail. This is the opposite of the ipwhois allow_permutations, in order to enable allow_permutations by default in the CLI. WARNING deprecated in favor of new argument asn_methods.
Common settings (RDAP & Legacy Whois):
--inc_raw Include the raw whois results in the output.
--retry_count RETRY_COUNT
 The number of times to retry in case socket errors, timeouts, connection resets, etc. are encountered.
--asn_alts ASN_ALTS
 A comma delimited list of additional lookup types to attempt if the ASN dns lookup fails. Allow permutations must be enabled. Defaults to all: “whois,http”. WARNING deprecated in favor of new argument asn_methods.
--asn_methods ASN_METHODS
 Array of ASN lookup types to attempt, in order. Defaults to all [‘dns’, ‘whois’, ‘http’].
--extra_org_map ASN_ALTS
 Dictionary mapping org handles to RIRs. This is for limited cases where ARIN REST (ASN fallback HTTP lookup) does not show an RIR as the org handle e.g., DNIC (which is now the built in ORG_MAP) e.g., {“DNIC”: “arin”}. Valid RIR values are (note the case-sensitive - this is meant to match the REST result): ‘ARIN’, ‘RIPE’, ‘apnic’, ‘lacnic’, ‘afrinic’
RDAP settings:
--depth COLOR_DEPTH
 If not –whois, how many levels deep to run RDAP queries when additional referenced objects are found.
--excluded_entities EXCLUDED_ENTITIES
 If not –whois, a comma delimited list of entity handles to not perform lookups.
--bootstrap If not –whois, performs lookups via ARIN bootstrap rather than lookups based on ASN data. ASN lookups are not performed and no output for any of the asn* fields is provided.
--rate_limit_timeout RATE_LIMIT_TIMEOUT
 If not –whois, the number of seconds to wait before retrying when a rate limit notice is returned via rdap+json.
Legacy Whois settings:
--get_referral If –whois, retrieve referral whois information, if available.
--extra_blacklist EXTRA_BLACKLIST
 If –whois, A list of blacklisted whois servers in addition to the global BLACKLIST.
--ignore_referral_errors
 If –whois, ignore and continue when an exception is encountered on referral whois lookups.
--field_list FIELD_LIST
 If –whois, a list of fields to parse: [‘name’, ‘handle’, ‘description’, ‘country’, ‘state’, ‘city’, ‘address’, ‘postal_code’, ‘emails’, ‘created’, ‘updated’]
NIR (National Internet Registry) settings:
--nir_field_list NIR_FIELD_LIST
 If not –exclude_nir, a list of fields to parse: [‘name’, ‘handle’, ‘country’, ‘address’, ‘postal_code’, ‘nameservers’, ‘created’, ‘updated’, ‘contact_admin’, ‘contact_tech’]
Input (Required):
--addr IP An IPv4 or IPv6 address as a string.

Usage Examples

Basic usage

ipwhois_cli.py --addr 74.125.225.229 --hr --show_name --colorize --depth 1

ipwhois_utils_cli.py

Usage

ipwhois_utils_cli.py [-h] [–ipv4_lstrip_zeros IPADDRESS]
[–calculate_cidr IPADDRESS IPADDRESS] [–get_countries] [–get_country COUNTRYCODE] [–ipv4_is_defined IPADDRESS] [–ipv6_is_defined IPADDRESS] [–unique_everseen ITERABLE] [–unique_addresses FILEPATH] [–colorize]

ipwhois utilities CLI interface

optional arguments:
-h, --help show this help message and exit
--ipv4_lstrip_zeros IPADDRESS
 Strip leading zeros in each octet of an IPv4 address.
--calculate_cidr IPADDRESSRANGE
 Calculate a CIDR range(s) from a start and end IP address. Separate start and end address arguments by space.
--get_countries
 Output a dictionary containing ISO_3166-1 country codes to names.
--get_country COUNTRYCODE
 Output the ISO_3166-1 name for a country code.
--ipv4_is_defined IPADDRESS
 Check if an IPv4 address is defined (in a reserved address range).
--ipv6_is_defined IPADDRESS
 Check if an IPv6 address is defined (in a reserved address range).
--unique_everseen ITERABLE
 List unique elements from input iterable, preserving the order.
--unique_addresses FILEPATH
 Search an input file, extracting, counting, and summarizing IPv4/IPv6 addresses/networks.
Output options:
--colorize If set, colorizes the output using ANSI. Should work in most platform consoles.

Usage Examples

ipv4_lstrip_zeros

>>>> ipwhois_utils_cli.py --ipv4_lstrip_zeros 074.125.025.229

74.125.25.229

calculate_cidr

>>>> ipwhois_utils_cli.py --calculate_cidr 192.168.0.9 192.168.5.4

Found 12 CIDR blocks for (192.168.0.9, 192.168.5.4):
192.168.0.9/32
192.168.0.10/31
192.168.0.12/30
192.168.0.16/28
192.168.0.32/27
192.168.0.64/26
192.168.0.128/25
192.168.1.0/24
192.168.2.0/23
192.168.4.0/24
192.168.5.0/30
192.168.5.4/32

get_countries

>>>> ipwhois_utils_cli.py --get_countries

Found 252 countries:
AD: Andorra
AE: United Arab Emirates
AF: Afghanistan
AG: Antigua and Barbuda
AI: Anguilla
AL: Albania
AM: Armenia
...

get_country

>>>> ipwhois_utils_cli.py --get_country US

Match found for country code (US):
United States

ipv4_is_defined

>>>> ipwhois_utils_cli.py --ipv4_is_defined 192.168.0.1

192.168.0.1 is defined:
Name: Private-Use Networks
RFC: RFC 1918

ipv6_is_defined

>>>> ipwhois_utils_cli.py --ipv6_is_defined fc00::

fc00:: is defined:
Name: Unique Local Unicast
RFC: RFC 4193

unique_everseen

>>>> ipwhois_utils_cli.py --unique_everseen [4,2,6,4,6,2]

Unique everseen:
[4, 2, 6]

unique_addresses

>>>> ipwhois_utils_cli.py --unique_addresses /tmp/some.file

Found 477 unique addresses:
74.125.225.229: Count: 5, Ports: {'22': 1}
2001:4860::/32: Count: 4, Ports: {'443': 1, '80': 2}
2001:4860:4860::8888: Count: 3, Ports: {}
...