らくがきちょう

なんとなく

Cisco ACI へ Python3 でログインするサンプル (urllib.request 版)

以前に 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=='}