194 lines
3.7 KiB
Markdown
194 lines
3.7 KiB
Markdown
# Cisco Switch Port Status Monitor (Telnet)
|
|
|
|
A Python-based monitoring tool that connects to a **Cisco switch via Telnet**, collects **interface status and PoE information**, and displays **active (connected) ports** in a clean **GUI dashboard**.
|
|
|
|
This project is designed for **homelab, lab, and operational environments** where SSH may not be available and Telnet is still in use.
|
|
|
|
---
|
|
|
|
## ✨ Features
|
|
|
|
- ✅ Telnet connection using `pexpect`
|
|
- ✅ **Supports login without username**
|
|
- ✅ Handles:
|
|
- Password-only login
|
|
- Username + password login
|
|
- Direct `>` or `#` prompt
|
|
- Enable (`enable`) password
|
|
- ✅ Automatically disables terminal paging
|
|
- ✅ Collects:
|
|
- Interface link status
|
|
- VLAN
|
|
- Speed (human readable)
|
|
- Duplex
|
|
- PoE admin/oper state
|
|
- PoE power usage (Watts)
|
|
- ✅ GUI table with:
|
|
- Auto refresh
|
|
- Manual refresh
|
|
- Sortable columns
|
|
- ✅ Designed to recover from connection failures gracefully
|
|
|
|
---
|
|
|
|
## 🖥️ GUI Overview
|
|
|
|
The GUI displays **only active (connected) ports** in a sortable table:
|
|
|
|
| Column | Description |
|
|
|------|------------|
|
|
| Port | Cisco interface converted to Port number |
|
|
| VLAN | Access VLAN |
|
|
| Speed | Human-readable link speed |
|
|
| Duplex | Full / Half |
|
|
| PoE Admin | PoE enabled/disabled |
|
|
| PoE Oper | PoE operational state |
|
|
| Power (W) | Power drawn by the device |
|
|
|
|
A status bar at the bottom shows:
|
|
- Connection state
|
|
- Errors
|
|
- Last refresh time
|
|
|
|
---
|
|
|
|
## 📦 Requirements
|
|
|
|
### Python
|
|
- Python **3.8+** recommended
|
|
|
|
### System packages
|
|
Tkinter is required for the GUI.
|
|
|
|
#### Debian / Ubuntu / Raspberry Pi OS
|
|
```bash
|
|
sudo apt install python3-tk
|
|
```
|
|
|
|
#### RedHat / Rocky / Alma / CentOS
|
|
```bash
|
|
sudo dnf install python3-tkinter
|
|
```
|
|
|
|
#### Arch / Manjaro
|
|
```bash
|
|
sudo pacman -S tk
|
|
```
|
|
|
|
### Python modules
|
|
```bash
|
|
pip install pexpect
|
|
```
|
|
|
|
---
|
|
|
|
## ⚙️ Configuration
|
|
|
|
Edit these variables at the top of `status.py`:
|
|
|
|
```python
|
|
SWITCH_IP = "10.183.100.11"
|
|
TELNET_PORT = 23
|
|
|
|
USERNAME = "" # optional
|
|
PASSWORD = "telnetpass"
|
|
ENABLE_PASSWORD = "enablepass"
|
|
```
|
|
|
|
### 🔐 Login without username
|
|
If your switch does **not** require a username:
|
|
```python
|
|
USERNAME = ""
|
|
```
|
|
|
|
This is fully supported.
|
|
|
|
---
|
|
|
|
## 🌱 Environment Variables (Recommended)
|
|
|
|
Instead of hardcoding credentials:
|
|
|
|
```bash
|
|
export SWITCH_USER=""
|
|
export SWITCH_PASS="telnetpass"
|
|
export SWITCH_ENABLE="enablepass"
|
|
python3 status.py
|
|
```
|
|
|
|
This keeps secrets out of source code.
|
|
|
|
---
|
|
|
|
## 🚀 Running the Program
|
|
|
|
```bash
|
|
python3 status.py
|
|
```
|
|
|
|
If running on a **headless server**, ensure:
|
|
- X11 / Wayland forwarding is available, **or**
|
|
- Use a desktop environment
|
|
|
|
For pure server usage, consider converting this to a **web dashboard**.
|
|
|
|
---
|
|
|
|
## 🔁 Refresh Behavior
|
|
|
|
- Auto refresh every **10 seconds** (configurable in GUI)
|
|
- Manual refresh button
|
|
- Auto refresh can be paused/resumed
|
|
|
|
The program safely:
|
|
- Reconnects on failure
|
|
- Retries after timeouts
|
|
- Never blocks the GUI
|
|
|
|
---
|
|
|
|
## 🛠️ How It Works (Internals)
|
|
|
|
1. Connects via Telnet using `pexpect`
|
|
2. Detects login prompt type
|
|
3. Enters enable mode if required
|
|
4. Runs:
|
|
- `show interfaces status`
|
|
- `show power inline`
|
|
5. Parses CLI output with regex
|
|
6. Merges interface + PoE data
|
|
7. Displays connected ports in GUI
|
|
|
|
---
|
|
|
|
## ⚠️ Notes & Limitations
|
|
|
|
- Telnet must be enabled on the switch
|
|
- Tested primarily on Cisco IOS-style output
|
|
- Parsing may need adjustment for NX-OS / IOS-XE variants
|
|
- GUI requires a graphical environment
|
|
|
|
---
|
|
|
|
## 🔮 Possible Extensions
|
|
|
|
- Web-based dashboard (Flask / FastAPI)
|
|
- Port search & filtering
|
|
- Historical PoE graphs
|
|
- Alerts for power spikes or link changes
|
|
- SSH support
|
|
|
|
---
|
|
|
|
## 📜 License
|
|
|
|
MIT License — use, modify, and share freely.
|
|
|
|
---
|
|
|
|
## 👤 Author
|
|
|
|
Created for homelab and operational monitoring of Cisco switches.
|
|
|
|
Feel free to extend and adapt.
|