mirror of
https://github.com/secynic/ipwhois.git
synced 2025-12-10 00:40:57 -06:00
293 lines
10 KiB
ReStructuredText
293 lines
10 KiB
ReStructuredText
===
|
|
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"]
|
|
[--inc_raw] [--retry_count RETRY_COUNT]
|
|
[--asn_alts "ASN_ALTS"] [--asn_methods "ASN_METHODS"]
|
|
[--extra_org_map "EXTRA_ORG_MAP"]
|
|
[--skip_asn_description] [--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"
|
|
|
|
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
|
|
List of ASN lookup types to attempt, in order.
|
|
Defaults to all ['dns', 'whois', 'http'].
|
|
--extra_org_map EXTRA_ORG_MAP
|
|
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'
|
|
--skip_asn_description
|
|
Don't run an additional query when pulling ASN
|
|
information via dns (to get the ASN description). This
|
|
is the opposite of the ipwhois get_asn_description
|
|
argument, in order to enable get_asn_description by
|
|
default in the CLI.
|
|
|
|
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: {}
|
|
...
|
|
|