Script intented to check a domain expiration with a query to the corresponding RDAP server. The RDAP server for the TLD is extracted from the IANA JSON RDAP. If the expiration field isn’t found on the TLD server, the script falls back to the registrar server. This script is inspired from https://raw.githubusercontent.com/buanzo/check_expiration_rdap/main/src/nagios_check_domain_expiration_rdap/nagios_check_domain_expiration_rdap.py and `/usr/lib/python3.11/site-packages/nagiosplugin/examples/` The script assumes that the TLD has only one label while looking for the RDAP server from the IANA JSON. If it’s not the case it will fail. Have fun. For all the options, run `./check_domain_expiration_rdap.py -h` Here are the tested cases: ```shell # expired domain alarig@x280 nagios-check_domain_expiration_rdap % (master *+%) ./check_domain_expiration_rdap.py found.com.br EXPIRATION CRITICAL - -31 days until domain expires (outside range @~:15) | daystoexpiration=-31d;@15:30;@~:15 zsh: exit 2 ./check_domain_expiration_rdap.py found.com.br # not reachable rdap server alarig@x280 nagios-check_domain_expiration_rdap % (master *+%) ./check_domain_expiration_rdap.py 美しい.世界 EXPIRATION UNKNOWN - The connection to the RDAP server failed: HTTPSConnectionPool(host='rdap.teleinfo.cn', port=443): Max retries exceeded with url: /xn--rhqv96g/domain/xn--n8jub8754b.xn--rhqv96g (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused')) zsh: exit 3 ./check_domain_expiration_rdap.py 美しい.世界 # unexistant domain name alarig@x280 nagios-check_domain_expiration_rdap % (master *+%) ./check_domain_expiration_rdap.py foundnotfound.fr EXPIRATION UNKNOWN - The domain foundnotfound.fr has not been found zsh: exit 3 ./check_domain_expiration_rdap.py foundnotfound.fr # tld without rdap server alarig@x280 nagios-check_domain_expiration_rdap % (master *+%) ./check_domain_expiration_rdap.py c.pt EXPIRATION UNKNOWN - The TLD pt does not have an RDAP server zsh: exit 3 ./check_domain_expiration_rdap.py c.pt # domain with more than two labels alarig@x280 nagios-check_domain_expiration_rdap % (master *+%) ./check_domain_expiration_rdap.py demarches.gouv.fr EXPIRATION OK - 113 days until domain expires | daystoexpiration=113d;@15:30;@~:15 # unicode domain alarig@x280 nagios-check_domain_expiration_rdap % (master *+%) ./check_domain_expiration_rdap.py こっち.みんな EXPIRATION OK - 268 days until domain expires | daystoexpiration=268d;@15:30;@~:15 # near expiration domain alarig@x280 nagios-check_domain_expiration_rdap % (master *+%) ./check_domain_expiration_rdap.py hostux.ninja EXPIRATION WARNING - 17 days until domain expires (outside range @15:30) | daystoexpiration=17d;@15:30;@~:15 zsh: exit 1 ./check_domain_expiration_rdap.py hostux.ninja # very far expiration domain alarig@x280 nagios-check_domain_expiration_rdap % (master *+%) ./check_domain_expiration_rdap.py swordarmor.fr EXPIRATION OK - 3615 days until domain expires | daystoexpiration=3615d;@15:30;@~:15 ```