workspace/skills/pyats-asa-firewall/SKILL.md
Cisco ASA firewall operations via pyATS — VPN sessions, failover state, interfaces, routing, service policies, resource usage, AnyConnect monitoring. Use when checking ASA failover status, monitoring VPN sessions, auditing ASA security, or troubleshooting AnyConnect connectivity.
npx skillsauth add automateyournetwork/netclaw pyats-asa-firewallInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
ASA devices in the pyATS testbed with os: asa:
devices:
asa-fw-01:
os: asa
type: firewall
connections:
cli:
protocol: ssh
ip: 10.0.0.10
port: 22
credentials:
default:
username: "%ENV{NETCLAW_USERNAME}"
password: "%ENV{NETCLAW_PASSWORD}"
enable:
password: "%ENV{NETCLAW_ENABLE}"
PYATS_TESTBED_PATH=$PYATS_TESTBED_PATH python3 $MCP_CALL "python3 -u $PYATS_MCP_SCRIPT" pyats_run_show_command '{"device_name":"asa-fw-01","command":"<command>"}'
pyats_run_show_command '{"device_name":"asa-fw-01","command":"show version"}'
ASA software version, hardware model, serial number, RAM, flash, license, uptime, last reload reason.
pyats_run_show_command '{"device_name":"asa-fw-01","command":"show inventory"}'
Hardware inventory: chassis, modules, SFPs with serial numbers and PIDs.
pyats_run_show_command '{"device_name":"asa-fw-01","command":"show resource usage"}'
Per-context resource utilization: connections, xlates, hosts, NAT, routes, ACL elements. Critical for multi-context ASA — identifies contexts approaching resource limits.
pyats_run_show_command '{"device_name":"asa-fw-01","command":"show failover"}'
Failover state (Active/Standby), peer state, last failover time, failover reason, stateful failover stats. Check this first on any HA pair.
pyats_run_show_command '{"device_name":"asa-fw-01","command":"show failover interface"}'
Failover and stateful failover link status, IP addresses, hello interval, peer monitoring.
pyats_run_show_command '{"device_name":"asa-fw-01","command":"show interface ip brief"}'
Compact interface table: interface name, IP address, status (up/down), method.
pyats_run_show_command '{"device_name":"asa-fw-01","command":"show interface detail"}'
Full interface details: speed, duplex, MAC, input/output packets/bytes/errors, collision counts, CRC errors.
pyats_run_show_command '{"device_name":"asa-fw-01","command":"show interface summary"}'
Summary traffic stats per interface.
pyats_run_show_command '{"device_name":"asa-fw-01","command":"show nameif"}'
Maps physical interface names to security zone names (e.g., GigabitEthernet0/0 → outside, GigabitEthernet0/1 → inside). Shows security level per interface.
pyats_run_show_command '{"device_name":"asa-fw-01","command":"show route"}'
Full routing table: connected, static, OSPF, EIGRP, BGP routes with next-hop, interface, metric, age.
pyats_run_show_command '{"device_name":"asa-fw-01","command":"show arp"}'
ARP cache: interface, IP address, MAC address, age. Cross-reference with NetBox for MAC verification.
pyats_run_show_command '{"device_name":"asa-fw-01","command":"show asp drop"}'
Packets dropped by the ASP — categorized by reason: flow-drop, acl-drop, inspect-drop, rpf-violated, no-route, etc. Critical for troubleshooting — reveals why traffic is being blocked.
pyats_run_show_command '{"device_name":"asa-fw-01","command":"show context"}'
pyats_run_show_command '{"device_name":"asa-fw-01","command":"show context detail"}'
Multi-context ASA: list all security contexts, allocated interfaces, resource class, admin state. detail shows interface allocation and URL mappings.
pyats_run_show_command '{"device_name":"asa-fw-01","command":"show traffic"}'
Per-interface traffic rates: input/output packets/sec and bytes/sec.
pyats_run_show_command '{"device_name":"asa-fw-01","command":"show service-policy"}'
Modular Policy Framework hit counts: class-maps, inspect actions, policing, shaping, QoS. Shows connection counts per policy.
pyats_run_show_command '{"device_name":"asa-fw-01","command":"show vpn-sessiondb summary"}'
Summary of all active VPN sessions by type: AnyConnect, L2L, WebVPN, clientless, total sessions, peak concurrent.
pyats_run_show_command '{"device_name":"asa-fw-01","command":"show vpn-sessiondb"}'
Full VPN session database — all types, user, duration, bytes, encryption.
pyats_run_show_command '{"device_name":"asa-fw-01","command":"show vpn-sessiondb anyconnect"}'
AnyConnect SSL VPN sessions: username, duration, bytes tx/rx, IP assignment, tunnel group, encryption, NAC result.
pyats_run_show_command '{"device_name":"asa-fw-01","command":"show vpn-sessiondb anyconnect sort inactivity"}'
AnyConnect sessions sorted by inactivity time — useful for identifying idle sessions consuming licenses.
pyats_run_show_command '{"device_name":"asa-fw-01","command":"show vpn-sessiondb webvpn"}'
Clientless WebVPN sessions: user, duration, bytes, inactivity.
pyats_run_show_command '{"device_name":"asa-fw-01","command":"show vpn load-balancing"}'
VPN cluster load distribution across ASA peers — sessions per member, load percentage.
pyats_run_show_command '{"device_name":"asa-fw-01","command":"show crypto ikev2 sa"}'
IKEv2 Security Associations: peer, state (READY), local/remote IDs, encryption, PRF, DH group, lifetime.
pyats_run_show_command '{"device_name":"asa-fw-01","command":"show ip local pool vpn-pool"}'
VPN IP address pool usage: available, in use, range. Monitor for pool exhaustion — running out of addresses blocks new VPN connections.
show version → ASA version, model, uptime, last reload
→ show failover → HA state (Active/Standby), peer health
→ show interface ip brief → interface up/down state
→ show resource usage → context resource utilization
→ show asp drop → dropped packet analysis
→ Severity-sort → GAIT
show vpn-sessiondb summary → total sessions by type, peak concurrent
→ show vpn-sessiondb anyconnect → active AnyConnect users
→ show vpn-sessiondb anyconnect sort inactivity → idle sessions
→ show ip local pool vpn-pool → address pool utilization
→ show vpn load-balancing → cluster distribution
→ show crypto ikev2 sa → IKEv2 tunnel state
→ Flag: pool > 80% used, sessions near license limit, idle > 8h
→ GAIT
show failover → verify Active/Standby state
→ show failover interface → failover link health
→ show interface ip brief → all interfaces match expected state
→ show route → routing table consistent with active role
→ show vpn-sessiondb summary → VPN sessions present on active unit
→ GAIT
show version → verify supported ASA version (cross-reference NVD CVE)
→ show asp drop → analyze drop reasons for anomalies
→ show service-policy → policy hit counts, inspect actions
→ show context detail → verify context isolation (multi-context)
→ show traffic → per-interface throughput baseline
→ GAIT
show vpn-sessiondb anyconnect → verify user session exists
→ show crypto ikev2 sa → IKEv2 tunnel established?
→ show interface ip brief → outside interface up?
→ show route → default route present?
→ show ip local pool vpn-pool → addresses available?
→ show asp drop → packets being dropped for this flow?
→ show service-policy → inspect policies blocking traffic?
→ GAIT
Run ASA health checks across multiple firewalls concurrently:
# ASA Pair - Primary
PYATS_TESTBED_PATH=$PYATS_TESTBED_PATH python3 $MCP_CALL "python3 -u $PYATS_MCP_SCRIPT" pyats_run_show_command '{"device_name":"asa-fw-01","command":"show failover"}'
# ASA Pair - Secondary
PYATS_TESTBED_PATH=$PYATS_TESTBED_PATH python3 $MCP_CALL "python3 -u $PYATS_MCP_SCRIPT" pyats_run_show_command '{"device_name":"asa-fw-02","command":"show failover"}'
# Remote Site ASA
PYATS_TESTBED_PATH=$PYATS_TESTBED_PATH python3 $MCP_CALL "python3 -u $PYATS_MCP_SCRIPT" pyats_run_show_command '{"device_name":"asa-remote-01","command":"show failover"}'
| Skill | Integration | |-------|-------------| | pyats-network | Core pyATS commands for IOS-XE/NX-OS devices alongside ASA firewalls | | pyats-security | CIS benchmark-style audits complement ASA-specific security checks | | pyats-parallel-ops | pCall pattern for fleet-wide ASA health checks | | fmc-firewall-ops | FMC manages FTD; ASA is managed directly — different platforms, similar mission | | ise-posture-audit | ISE NAC results correlate with ASA VPN session NAC status | | netbox-reconcile | Cross-reference ASA interfaces, IP assignments with NetBox | | nvd-cve | Scan ASA version against NVD vulnerability database | | servicenow-change-workflow | Gate ASA config changes behind ServiceNow CRs | | gait-session-tracking | Every ASA command logged in GAIT |
configure terminal or write memory via this skilltesting
Human-in-the-loop escalation via HumanRail — route low-confidence agent decisions, pre-destructive operation approvals, and ambiguous incident tickets to real human engineers. Human answers are verified and returned as structured output. Workers are paid via Lightning Network. Use when the agent is uncertain, when a destructive change needs explicit human sign-off beyond a ServiceNow CR, or when an ambiguous ticket requires human triage before automated handling.
testing
Manage EVE-NG node lifecycle. Use when listing nodes, checking runtime state, creating or deleting nodes, starting or stopping nodes or whole labs, verifying node details, or wiping node NVRAM back to factory defaults.
development
Manage EVE-NG labs and platform inventory. Use when listing labs, checking lab metadata, creating or deleting labs, importing or exporting lab archives, checking EVE-NG health or auth, or verifying available node images before build work.
tools
Execute live CLI commands on running EVE-NG nodes over telnet console. Use when running show commands, making live config changes, verifying protocol state, testing connectivity, checking console readiness, or interacting with IOS, Junos, VPCS, EOS, or NX-OS nodes.