sane-ip-check: port argument parsing to argparse

This commit is contained in:
Colin 2024-04-18 19:40:44 +00:00
parent 40af93a7fb
commit bdc3b1ed0e
1 changed files with 20 additions and 11 deletions

View File

@ -1,9 +1,13 @@
#!/usr/bin/env nix-shell
#!nix-shell -i python3 -p "python3.withPackages (ps: [ ps.requests ps.sane-lib.ssdp ])" -p miniupnpc
"""
sane-ip-check: query the IP address of this machine as seen by an external Internet host.
"""
# best to run this with an external timeout. e.g.
# - `timeout 60 sane-ip-check`
import argparse
import json
import logging
import requests
@ -27,20 +31,25 @@ def get_wan_fallback():
if __name__ == '__main__':
logging.basicConfig()
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("-v", action="store_true", help="be verbose")
parser.add_argument("-vv", action="store_true", help="be more verbose")
parser.add_argument("--json", action="store_true", help="output results in json format")
parser.add_argument("--no-upnp", action="store_true", help="instead of asking the gateway for its IP address, discover my IP by querying a third-party public service")
format = "plaintext"
try_upnp = True
args = parser.parse_args()
if args.v:
logging.getLogger().setLevel(logging.INFO)
if args.vv:
logging.getLogger().setLevel(logging.DEBUG)
if args.json:
format = "json"
if args.no_upnp:
try_upnp = False
for arg in sys.argv[1:]:
if arg == "-v":
logging.getLogger().setLevel(logging.INFO)
elif arg == "-vv":
logging.getLogger().setLevel(logging.DEBUG)
elif arg == "--json":
format = "json"
elif arg == "--no-upnp":
try_upnp = False
else:
raise RuntimeError(f"invalid CLI argument {arg!r}")
upnp_details = get_any_wan() if try_upnp else None
if upnp_details: