以前に Cisco ACI へログインして認証トークンを取得する Python スクリプトのサンプルというメモを書きました。 ここでは requests モジュールを使った Python スクリプトを書いたのですが、これを urllib.request を使って書き直したサンプルをメモしておきます。 Python 3.7.3 で動作確認しました。 ACI 4.2(2e) で確認していますが、ACI 側のバージョンには依存していないはずです。
サンプルスクリプト
#!/usr/bin/env python import json import ssl import urllib.request ssl._create_default_https_context = ssl._create_unverified_context # Parameters apic = "https://10.0.0.1" username = "admin" password = "password" headers = {'Content-Type': 'application/json'} # Send post request. credential = {'aaaUser': {'attributes': {'name': username, 'pwd': password}}} url = apic + '/api/aaaLogin.json' request = urllib.request.Request(url, json.dumps(credential).encode(), headers) response = urllib.request.urlopen(request).read() # Get token token = json.loads(response)['imdata'][0]['aaaLogin']['attributes']['token'] cookie = {} cookie['APIC-cookie'] = token print(cookie)
実行例
# ./login.py {'APIC-cookie': 'XgQAAA・・・・・gjRlggAzQ=='}