pythonでJPドメインの情報を取得してみる
こんにちは、ysです。
さて、早速1回目の記事を書きます。
インフラ管理では、ドメインの管理も重要な業務の一環になります。
今までですと、whoisコマンドで情報の確認を行っていましたが、
Lambdaでコードを書いて自動化し、工数削減することも業務の一つになっており、
今回は、pythonで一括で情報を取得してみようということになりました。
当初は簡単に出来るかな、、と思いきや、当初の目論見より時間がかかりましたので備忘もかねて記載します。
pythonではpython-whoisモジュールを使えば、ドメインの情報を取得できます。
https://pypi.org/project/python-whois/
import whois
if __name__ == '__main__':
result = whois.whois('google.com')
print(result)
ただ、jpドメインについては情報がなぜか取得できませんでした。
全てnullになってます。
{
"domain_name": null,
"registrant_org": null,
"creation_date": null,
"name_servers": null,
"updated_date": null,
"status": null
}
結論としては、
whoisモジュールを使用することで対応できるようです。
上記で使用しているpython-whoisとはモジュール名が重複するようなので、
どちらか片方をインストールしてもう一方をアンインストールしたほうがよさそうです。
ドキュメントはこちらです。
https://github.com/DannyCork/python-whois
インストールコマンドはこちらです。
pip install whois
import whois
結果は下記の通りです。日付の出力が独特なので、変更を行います。
{'name': 'google.jp', 'registrar': '', 'registrant_country': '', 'creation_date': datetime.datetime(2005, 5, 30, 0, 0), 'expiration_date':
datetime.datetime(2022, 5, 31, 0, 0), 'last_updated': datetime.datetime(2021, 6, 1, 1, 5, 9), 'status': 'Active', 'statuses': ['Active'], 'dnssec': False, 'name_servers': {'ns2.google.com', 'ns4.google.com', 'ns1.google.com', 'ns3.google.com'}, 'registrant': 'Google LLC'}
●試行錯誤その1
python-whois-extendedであればJPドメイン対応可能!となっていましたが、DNSサーバくらいで、期限等の情報は取れませんでした。。
https://pypi.org/project/python-whois-extended/
●試行錯誤その2
ここで引用されているclass(WhoisEntry,WhoisJp)を追加してみましたが、
https://github.com/richardpenman/whois/blob/master/whois/parser.py
co.jpドメインは可能、jpドメインは不可能という結果になりました。
●試行錯誤その3
pythonでLinuxのコマンドであるwhoisを使用すれば情報は取得できそうです。
import subprocess
from subprocess import PIPEdef command():
response = subprocess.run("whois google.jp", shell=True, stdout=PIPE, stderr=PIPE, text=True)
print(response.stdout)if __name__ == '__main__':
command()
ただ、これはPythonというよりもシェルスクリプトを書いているようなので
やめました。
blogを書いてみて
マークダウン形式で書きたいのですが、うまくいきませんでした。。
次回までに勉強しておきます。