ISE MnT API
Monitoring and Troubleshooting API. Query active sessions, authentication history, and issue Change of Authorization (CoA) requests.
Overview
Base URL |
|
Auth |
Basic Auth (same credentials as ERS) |
Format |
XML (default) — pipe through |
Port |
443 (not 9060 — separate from ERS) |
Target |
MnT node (same as PAN in standalone, dedicated node in distributed) |
MnT returns XML. Use xq (from python-yq package) to convert to JSON. Install: pacman -S python-yq (Arch) or pip install yq.
|
Environment Setup
# Scoped (preferred — 45 vars)
dsource d000 dev/network/ise
# Full (legacy — 120 vars)
dsource d000 dev/network
Key Endpoints
| Path | Purpose |
|---|---|
|
ISE version and node type |
|
All authentication failure codes |
|
Total active session count |
|
All active sessions |
|
Session by MAC (reliable) |
|
Session by IP (unreliable — use MAC when possible) |
|
Sessions by username (must match exact cert CN for EAP-TLS) |
|
Authentication history by MAC |
|
Force re-authentication (target is switch/WLC, not ISE) |
|
Disconnect / port bounce (target is switch/WLC, not ISE) |
Examples — curl + xq
Version
curl -sS \
--cacert "${ISE_CA_CERT}" \
-u "${ISE_MNT_USER}:${ISE_MNT_PASS}" \
"https://${ISE_MNT_FQDN}:${ISE_MNT_PORT}/admin/API/mnt/Version" \
| xq -C '.'
Active Sessions
curl -sS \
--cacert "${ISE_CA_CERT}" \
-u "${ISE_MNT_USER}:${ISE_MNT_PASS}" \
"https://${ISE_MNT_FQDN}:${ISE_MNT_PORT}/admin/API/mnt/Session/ActiveList" \
| xq -C '.'
curl -sS \
--cacert "${ISE_CA_CERT}" \
-u "${ISE_MNT_USER}:${ISE_MNT_PASS}" \
"https://${ISE_MNT_FQDN}:${ISE_MNT_PORT}/admin/API/mnt/Session/ActiveList" \
| xq -r '.activeList.activeSession[] | "\(.framed_ip_address)\t\(.calling_station_id)\t\(.user_name)"' \
| column -t -s $'\t'
Session by MAC — Full Dump
MAC="14:F6:D8:7B:31:80"
curl -sS \
--cacert "${ISE_CA_CERT}" \
-u "${ISE_MNT_USER}:${ISE_MNT_PASS}" \
"https://${ISE_MNT_FQDN}:${ISE_MNT_PORT}/admin/API/mnt/Session/MACAddress/${MAC}" \
| xq -C '.'
Session by MAC — Operational Summary
curl -sS \
--cacert "${ISE_CA_CERT}" \
-u "${ISE_MNT_USER}:${ISE_MNT_PASS}" \
"https://${ISE_MNT_FQDN}:${ISE_MNT_PORT}/admin/API/mnt/Session/MACAddress/${MAC}" \
| xq -C '.sessionParameters | {
user_name,
calling_station_id,
identity_group,
authentication_method,
authentication_protocol,
framed_ip_address,
nas_ip_address,
network_device_name,
selected_azn_profiles,
acs_server,
auth_acs_timestamp,
endpoint_policy,
acct_status_type,
acct_session_id
}'
Session by MAC — Certificate and Policy Deep Dive
curl -sS \
--cacert "${ISE_CA_CERT}" \
-u "${ISE_MNT_USER}:${ISE_MNT_PASS}" \
"https://${ISE_MNT_FQDN}:${ISE_MNT_PORT}/admin/API/mnt/Session/MACAddress/${MAC}" \
| xq -r '.sessionParameters.other_attr_string' \
| tr ':!:' '\n' \
| grep -P '^(Issuer - Common|Subject - Common|Days to Expiry|ISEPolicySetName|AuthorizationPolicyMatchedRule|IdentityPolicyMatchedRule|TLSVersion|HostIdentityGroup=Endpoint)|cisco-wlan-ssid='
Reverse Lookup: IP → MAC
TARGET_IP="10.50.10.107"
curl -sS \
--cacert "${ISE_CA_CERT}" \
-u "${ISE_MNT_USER}:${ISE_MNT_PASS}" \
"https://${ISE_MNT_FQDN}:${ISE_MNT_PORT}/admin/API/mnt/Session/ActiveList" \
| xq -r ".activeList.activeSession[] | select(.framed_ip_address==\"${TARGET_IP}\") | .calling_station_id"
Authentication History
MAC="14:F6:D8:7B:31:80"
curl -sS \
--cacert "${ISE_CA_CERT}" \
-u "${ISE_MNT_USER}:${ISE_MNT_PASS}" \
"https://${ISE_MNT_FQDN}:${ISE_MNT_PORT}/admin/API/mnt/AuthStatus/MACAddress/${MAC}/86400/10/All" \
| xq -C '.'
Failure Reasons
curl -sS \
--cacert "${ISE_CA_CERT}" \
-u "${ISE_MNT_USER}:${ISE_MNT_PASS}" \
"https://${ISE_MNT_FQDN}:${ISE_MNT_PORT}/admin/API/mnt/FailureReasons" \
| xq -C '.failureReasonList.failureReason[:5]'
CoA — Reauth
MAC="14:F6:D8:7B:31:80"
NAS_IP=$(curl -sS \
--cacert "${ISE_CA_CERT}" \
-u "${ISE_MNT_USER}:${ISE_MNT_PASS}" \
"https://${ISE_MNT_FQDN}:${ISE_MNT_PORT}/admin/API/mnt/Session/MACAddress/${MAC}" \
| xq -r '.sessionParameters.nas_ip_address')
echo "NAS: ${NAS_IP}"
# Type: 0=default, 1=last, 2=rerun
curl -sS \
--cacert "${ISE_CA_CERT}" \
-u "${ISE_MNT_USER}:${ISE_MNT_PASS}" \
-X PUT \
"https://${ISE_MNT_FQDN}:${ISE_MNT_PORT}/admin/API/mnt/CoA/Reauth/${NAS_IP}/${MAC}/2" \
| xq -C '.'
CoA — Disconnect
# Type: 0=default, 1=port_bounce, 2=port_shutdown
curl -sS \
--cacert "${ISE_CA_CERT}" \
-u "${ISE_MNT_USER}:${ISE_MNT_PASS}" \
-X PUT \
"https://${ISE_MNT_FQDN}:${ISE_MNT_PORT}/admin/API/mnt/CoA/Disconnect/${NAS_IP}/${MAC}/1" \
| xq -C '.'
Port shutdown (type=2) disables the switch port. Requires manual re-enable.
|
netapi Commands
netapi ise mnt sessions
netapi ise mnt session "14:F6:D8:7B:31:80"
netapi ise mnt auth-status "14:F6:D8:7B:31:80"
netapi ise mnt count
netapi ise mnt version
netapi ise mnt failure-reasons
netapi ise mnt coa --mac "14:F6:D8:7B:31:80" --action reauth
netapi ise mnt coa --mac "14:F6:D8:7B:31:80" --action disconnect
Learnings
|
MnT Gotchas (tested 2026-04-15)
|