pyats-junos-system
$
npx mdskill add automateyournetwork/netclaw/pyats-junos-systemPerforms JunOS system operations using pyATS for Juniper devices
- Checks chassis alarms, hardware inventory, and system uptime on Juniper devices
- Uses pyATS and JunOS CLI commands via SSH for data collection
- Analyzes command output for alarms, environmental issues, or configuration anomalies
- Returns structured results including alarms, logs, counters, and system status
SKILL.md
.github/skills/pyats-junos-systemView on GitHub ↗
---
name: pyats-junos-system
description: "JunOS system operations via pyATS — chassis health, hardware inventory, system info, NTP, SNMP, files/logs, firewall counters, DDoS protection, services accounting. Use when checking Juniper chassis alarms, auditing hardware inventory, reviewing system uptime, or inspecting JunOS firewall counters."
license: Apache-2.0
user-invocable: true
metadata:
{ "openclaw": { "requires": { "bins": ["python3"], "env": ["PYATS_TESTBED_PATH"] } } }
---
# JunOS System Operations via pyATS
## Testbed Requirements
Juniper devices in the pyATS testbed with `os: junos`:
```yaml
devices:
juniper-rtr-01:
os: junos
type: router
connections:
cli:
protocol: ssh
ip: 10.0.0.1
port: 22
credentials:
default:
username: "%ENV{NETCLAW_USERNAME}"
password: "%ENV{NETCLAW_PASSWORD}"
```
## How to Call
```bash
PYATS_TESTBED_PATH=$PYATS_TESTBED_PATH python3 $MCP_CALL "python3 -u $PYATS_MCP_SCRIPT" pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"<command>"}'
```
---
## Commands
### Chassis Health & Hardware
#### Chassis Alarms
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show chassis alarms"}'
```
Active alarms on the chassis. **Check first** — any active alarm indicates a hardware or environmental issue.
#### Chassis Environment
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show chassis environment"}'
```
Temperature, fan speed, power supply status across all components. Variants:
- `show chassis environment fpc` — FPC-specific temperature and status
- `show chassis environment routing-engine` — RE temperature and status
- `show chassis environment {component}` — Specific component (e.g., `cb0`, `pem0`)
#### Chassis FPC (Flexible PIC Concentrators)
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show chassis fpc"}'
```
FPC slot status, state (Online/Offline), temperature, CPU/memory utilization. Variants:
- `show chassis fpc detail` — Extended FPC details including uptime
- `show chassis fpc pic-status` — PIC status within each FPC slot
#### Chassis PIC
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show chassis pic fpc-slot 0 pic-slot 0"}'
```
Specific PIC details — port types, speeds, operational state.
#### Chassis Hardware
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show chassis hardware"}'
```
Hardware inventory: model, serial numbers, descriptions for all components (RE, FPC, PIC, PEM, fan trays). Variants:
- `show chassis hardware detail` — Extended details with part numbers
- `show chassis hardware detail no-forwarding` — Skip forwarding engine details
- `show chassis hardware extensive` — Maximum hardware detail
- `show chassis hardware extensive no-forwarding` — Extensive without forwarding
#### Chassis Fabric
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show chassis fabric summary"}'
```
Switch fabric plane status. Also: `show chassis fabric plane` for per-plane details.
#### Chassis Firmware
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show chassis firmware"}'
```
Firmware versions on all components. Also: `show chassis firmware no-forwarding`.
#### Chassis Power
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show chassis power"}'
```
Power supply status, input/output watts, capacity, redundancy mode.
#### Chassis Routing Engine
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show chassis routing-engine"}'
```
RE slot, status, model, memory, CPU utilization, uptime, load averages. Also: `show chassis routing-engine no-forwarding`.
### System Information
#### Version
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show version"}'
```
JunOS version, hostname, model, serial number. Variants:
- `show version detail` — Build info, kernel version
- `show version detail no-forwarding` — Skip forwarding engine
- `show version invoke-on all-routing-engines` — Version on all REs (dual RE systems)
#### System Uptime
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show system uptime"}'
```
Current time, uptime, last configured timestamp, boot time, protocol daemon restart. Also: `show system uptime no-forwarding`.
#### System Information
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show system information"}'
```
Hardware model, serial, hostname, domain.
#### System Users
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show system users"}'
```
Currently logged-in users — terminal, login time, idle time, source IP.
#### System Commit History
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show system commit"}'
```
Configuration commit history — who committed, when, commit comment.
#### System Storage
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show system storage"}'
```
Filesystem usage — /dev/gpt, /var, /config. Also: `show system storage no-forwarding`.
#### System Buffers
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show system buffers"}'
```
Kernel buffer pool statistics. Also: `show system buffers no-forwarding`.
#### System Queues
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show system queues"}'
```
Packet queue statistics. Also: `show system queues no-forwarding`.
#### System Statistics
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show system statistics"}'
```
Protocol statistics (IP, ICMP, TCP, UDP counters). Also: `show system statistics no-forwarding`.
#### System Connections
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show system connections"}'
```
Active TCP/UDP connections on the RE — useful for verifying management sessions.
#### System Core Dumps
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show system core-dumps"}'
```
Core dump files — indicates past crashes. Also: `show system core-dumps no-forwarding`.
#### Task Memory & Replication
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show task memory"}'
```
Routing protocol daemon memory usage per task (BGP, OSPF, IS-IS, etc.). Also: `show task replication` for GRES/NSR replication state.
### NTP
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show ntp associations"}'
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show ntp status"}'
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show configuration system ntp"}'
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show configuration system ntp | display set"}'
```
### SNMP
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show snmp statistics"}'
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show snmp mib walk system"}'
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show configuration snmp"}'
```
### Files & Logs
#### File Listing
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"file list"}'
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"file list /var/log detail"}'
```
Browse filesystem — check log sizes, config backups, core dumps.
#### Log Files
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show log messages"}'
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show log messages | match OSPF"}'
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show log messages | match BGP | except Peer"}'
```
Flexible log filtering with match/except pipes.
### Firewall Filters
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show firewall"}'
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show firewall log"}'
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show firewall counter filter my-filter block"}'
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show firewall counter filter my-filter my-counter"}'
```
### DDoS Protection
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show ddos-protection statistics"}'
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show ddos-protection protocols ospf"}'
```
### Services Accounting
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show services accounting status"}'
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show services accounting flow"}'
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show services accounting usage"}'
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show services accounting memory"}'
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show services accounting errors"}'
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show services accounting aggregation template template-name my-template extensive"}'
```
### Security
```bash
pyats_run_show_command '{"device_name":"juniper-rtr-01","command":"show security policies hit-count"}'
```
---
## Workflows
### 1. JunOS Chassis Health Check
```
pyats_list_devices → identify JunOS devices
→ show chassis alarms → active alarms (CRITICAL if any)
→ show chassis environment → temperature, fans, power
→ show chassis fpc → FPC online/offline, CPU/memory
→ show chassis routing-engine → RE status, load averages
→ show chassis hardware → hardware inventory baseline
→ Severity-sort → GAIT
```
### 2. JunOS System Audit
```
show version → JunOS version, model, serial
→ show system uptime → device stability
→ show system commit → recent config changes
→ show system storage → disk usage (>80% = WARNING)
→ show system core-dumps → crash history (any = WARNING)
→ show ntp associations → time sync (stratum, offset)
→ Cross-reference version with NVD CVE → vulnerability exposure
→ GAIT
```
### 3. JunOS Security Posture
```
show firewall → active filters
→ show firewall log → recent filter hits
→ show ddos-protection statistics → DDoS protection state
→ show security policies hit-count → policy utilization
→ show snmp statistics → SNMP polling load
→ GAIT
```
---
## Integration with Other Skills
| Skill | Integration |
|-------|-------------|
| **junos-network** | JunOS MCP (PyEZ/NETCONF) for config management; pyATS for operational CLI show commands |
| **pyats-junos-interfaces** | Interface-specific commands complement chassis/system view |
| **pyats-junos-routing** | Routing protocol commands complement system/hardware view |
| **pyats-health-check** | Extend standard health checks to include JunOS chassis metrics |
| **netbox-reconcile** | Cross-reference chassis hardware (serial, model) with NetBox DCIM |
| **nvd-cve** | Scan JunOS versions from `show version` against NVD |
| **gait-session-tracking** | Every command logged in GAIT |
---
## Guardrails
- **All commands are read-only** — show, file list, and status commands only
- **Always check `show chassis alarms` first** — active alarms take priority
- **Cross-reference with SoT** — compare hardware inventory with NetBox/Nautobot
- **Record in GAIT** — every command execution must be logged