Fix README to reflect NocoDB-driven switch inventory
This commit is contained in:
@@ -5,30 +5,38 @@ Discovers switch topology via LLDP, stores in SQLite, and visualises with Cytosc
|
|||||||
|
|
||||||
## Quick Start
|
## Quick Start
|
||||||
|
|
||||||
### 1. Configure your switches
|
### 1. Configure
|
||||||
|
|
||||||
Edit `mapper/config.py`:
|
Copy `config.py.example` to `config.py` and fill in your values:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cp config.py.example config.py
|
||||||
|
nano config.py
|
||||||
|
```
|
||||||
|
|
||||||
```python
|
```python
|
||||||
SWITCHES = [
|
NOCODB_URL = "http://your-nocodb-host:8080"
|
||||||
"192.168.1.1",
|
NOCODB_TOKEN = "your-api-token"
|
||||||
"192.168.1.2",
|
|
||||||
# Add all switch management IPs
|
|
||||||
]
|
|
||||||
|
|
||||||
SSH_USERNAME = "admin"
|
SSH_USERNAME = "admin"
|
||||||
SSH_PASSWORD = "yourpassword"
|
SSH_PASSWORD = "your-ssh-password"
|
||||||
|
SSH_PORT = 22
|
||||||
|
SSH_TIMEOUT = 30
|
||||||
|
DEVICE_TYPE = "cisco_ios"
|
||||||
```
|
```
|
||||||
|
|
||||||
|
Switch IPs are pulled automatically from NocoDB — no manual list needed.
|
||||||
|
See [NocoDB Requirements](#nocodb-requirements) below.
|
||||||
|
|
||||||
### 2. Build and run
|
### 2. Build and run
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
docker-compose up --build
|
docker compose up -d --build
|
||||||
```
|
```
|
||||||
|
|
||||||
### 3. Open the UI
|
### 3. Open the UI
|
||||||
|
|
||||||
Navigate to: http://localhost:5000
|
Navigate to: `http://your-host-ip:5000`
|
||||||
|
|
||||||
Click **Scan Now** to start discovery.
|
Click **Scan Now** to start discovery.
|
||||||
|
|
||||||
@@ -60,18 +68,34 @@ All files written to `data/exports/`:
|
|||||||
Toggle auto-scan on/off from the UI. Set interval (15 min to 6 hours).
|
Toggle auto-scan on/off from the UI. Set interval (15 min to 6 hours).
|
||||||
State persists across container restarts.
|
State persists across container restarts.
|
||||||
|
|
||||||
|
## NocoDB Requirements
|
||||||
|
|
||||||
|
Switch inventory is loaded from NocoDB automatically. The table must have:
|
||||||
|
|
||||||
|
| Column | Description |
|
||||||
|
|--------|-------------|
|
||||||
|
| `IP` | Switch management IP — required |
|
||||||
|
| `Hostname` | Switch hostname |
|
||||||
|
| `Active` | Must be `YES` to be included in scans |
|
||||||
|
| `Dept` | Department code (e.g. `ELEC`, `GW`) — used for filtering |
|
||||||
|
| `Location` | Physical location label |
|
||||||
|
| `Model` | Switch model |
|
||||||
|
| `Manufacturer` | Switch manufacturer |
|
||||||
|
| `Asset Tag` | Asset tag |
|
||||||
|
|
||||||
|
The NocoDB base ID and table ID are hardcoded in `nocodb_client.py` — update them there if you point this at a different NocoDB instance.
|
||||||
|
|
||||||
## Troubleshooting
|
## Troubleshooting
|
||||||
|
|
||||||
**Auth errors**: Check SSH_USERNAME / SSH_PASSWORD in config.py
|
**No switches loaded**: Check `NOCODB_URL` and `NOCODB_TOKEN` in `config.py`. NocoDB must return at least one row with `Active=YES` and a non-empty `IP`.
|
||||||
|
|
||||||
**Timeout errors**: Increase SSH_TIMEOUT in config.py (default: 30s)
|
**Auth errors**: Check `SSH_USERNAME` / `SSH_PASSWORD` in `config.py`.
|
||||||
|
|
||||||
**Wrong device type**: If your FS switch uses a non-IOS CLI, try changing
|
**Timeout errors**: Increase `SSH_TIMEOUT` in `config.py` (default: 30s).
|
||||||
DEVICE_TYPE to `"linux"` or `"generic"` in config.py
|
|
||||||
|
|
||||||
**No management IP found**: The script looks for Vlan interfaces in
|
**Wrong device type**: If your switch uses a non-IOS CLI, try changing `DEVICE_TYPE` to `"linux"` or `"generic"` in `config.py`.
|
||||||
`show ip interface brief`. If your switch uses a different command,
|
|
||||||
edit `parser.py → parse_mgmt_ip_from_interfaces()`
|
**No management IP found**: The script looks for Vlan interfaces in `show ip interface brief`. If your switch uses a different command, edit `parser.py → parse_mgmt_ip_from_interfaces()`.
|
||||||
|
|
||||||
## Project Structure
|
## Project Structure
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user