From e5962964f415198cf0fb4176e7eb1b0f1f7c6491 Mon Sep 17 00:00:00 2001 From: gru Date: Tue, 6 May 2025 11:04:34 +0200 Subject: [PATCH] Update README.md --- README.md | 134 +++++++++++++++++++++++++++++++++--------------------- 1 file changed, 83 insertions(+), 51 deletions(-) diff --git a/README.md b/README.md index 6643a93..793484e 100644 --- a/README.md +++ b/README.md @@ -1,78 +1,110 @@ -SNMP Multi-Subnet Scanner -========================= +# SNMP Multi-Subnet Scanner -Opis ------ -Ten skrypt w Pythonie umożliwia skanowanie wielu podsieci IPv4 oraz pobieranie informacji SNMP (v2c) z urządzeń sieciowych, takich jak Mikrotik, Cisco itp. Obsługuje podział dużych sieci na mniejsze, równoległe skanowanie wielu podsieci, zapis wyników do pliku CSV oraz opcjonalny import podsieci z pliku tekstowego. +## Opis + +Ten skrypt w Pythonie umożliwia **skanowanie wielu podsieci IPv4** oraz pobieranie informacji SNMP (v2c) z urządzeń sieciowych, takich jak Mikrotik, Cisco itp. Obsługuje **podział dużych sieci na mniejsze**, **równoległe skanowanie wielu podsieci**, **zapis wyników do pliku CSV** oraz opcjonalny **import podsieci z pliku tekstowego**. + +## Funkcje -Funkcje --------- - Obsługa wielu podsieci w formacie CIDR (z linii poleceń lub pliku) - Wsparcie dla standardowych OID-ów (domyślnie tylko `sysName`, inne opcjonalnie) - Możliwość podania niestandardowych OID-ów w formacie JSON -- Wydajne skanowanie z użyciem ThreadPoolExecutor +- Wydajne skanowanie z użyciem `ThreadPoolExecutor` - Dzieli duże sieci na mniejsze (domyślnie /24) - Obsługa timeoutów oraz pomijanie hostów bez odpowiedzi - Eksport wyników do pliku CSV (z możliwością nazwania pliku) - Czytelna tabela wyników w terminalu -Wymagania ----------- +## Wymagania + - Python 3.6+ -- Zainstalowane narzędzie snmpget (część pakietu net-snmp) +- Zainstalowane narzędzie `snmpget` (część pakietu `net-snmp`) -Na Debian/Ubuntu: - sudo apt install snmp +**Na Debian/Ubuntu:** -Użycie -------- - python snmp_scan.py [subnet2 subnet3 ...] [opcje] +```bash +sudo apt install snmp +``` -Opcje: - -c, --community SNMP community (domyślnie: public) - -o, --oids Własne OID-y w formacie JSON - -w, --workers Liczba równoległych wątków (domyślnie: 10) - -p, --prefix Prefiks do podziału dużych sieci (domyślnie: 24) - -f, --file Nazwa pliku CSV do zapisu wyników (domyślnie: wyniki.csv) - -s, --subnet-file Plik z listą podsieci (jedna na linię) +## Użycie -Przykłady ----------- -Skan jednej podsieci: - python snmp_scan.py 10.87.2.0/24 +```bash +python snmp_scan.py [subnet2 subnet3 ...] [opcje] +``` -Skan wielu podsieci z niestandardowym community: - python snmp_scan.py 10.87.2.0/24 10.88.1.0/24 -c moje_community +### Opcje -Skan dużej sieci z podziałem na /24, 20 wątków i zapisem do pliku: - python snmp_scan.py 172.16.0.0/16 -w 20 -p 24 -f wynik.csv +- `-c`, `--community` – SNMP community (domyślnie: `public`) +- `-o`, `--oids` – własne OID-y w formacie JSON (np. `'{"sysDescr":"1.3.6.1.2.1.1.1.0"}'`) +- `-w`, `--workers` – liczba równoległych wątków (domyślnie: 10) +- `-p`, `--prefix` – prefiks do podziału dużych sieci (domyślnie: 24) +- `-f`, `--file` – nazwa pliku CSV do zapisu wyników (domyślnie: `wyniki.csv`) +- `-s`, `--subnet-file` – plik z listą podsieci (jedna na linię) -Wczytywanie listy podsieci z pliku: - python snmp_scan.py -s subnets.txt -c public -f wynik.csv +## Przykłady -Przykładowy plik subnets.txt: - 10.0.0.0/24 - 192.168.100.0/24 +### Skan jednej podsieci -Przykładowy wynik ------------------- +```bash +python snmp_scan.py 10.87.2.0/24 +``` + +### Skan wielu podsieci z niestandardowym community + +```bash +python snmp_scan.py 10.87.2.0/24 10.88.1.0/24 -c moje_community +``` + +### Skan dużej sieci z podziałem na /24, 20 wątków i zapisem do pliku + +```bash +python snmp_scan.py 172.16.0.0/16 -w 20 -p 24 -f wynik.csv +``` + +### Wczytywanie listy podsieci z pliku + +Zawartość `subnets.txt`: + +``` +10.0.0.0/24 +192.168.100.0/24 +``` + +Uruchomienie: + +```bash +python snmp_scan.py -s subnets.txt -c public -f wynik.csv +``` + +## Przykładowy wynik + +``` IP sysName sysDescr sysLocation sysContact ----------------------------------------------------------------------------------------------- 10.87.2.1 cisco-router Cisco IOS Software... Serwerownia admin@example.com 10.87.2.2 rb750 RouterOS RB750Gr3 ... Rack1 noc@firma.pl +``` + +## Dostosowanie -Dostosowanie -------------- Aby dodać więcej OID-ów do zapytań, możesz: -- Podać je w linii poleceń: - -o '{"sysName":"1.3.6.1.2.1.1.5.0","sysDescr":"1.3.6.1.2.1.1.1.0"}' -- Lub zmodyfikować domyślny słownik w kodzie: - default_oids = { - "sysName": "1.3.6.1.2.1.1.5.0", - "sysDescr": "1.3.6.1.2.1.1.1.0", - ... - } -Licencja ---------- -Projekt open-source przeznaczony do użytku wewnętrznego lub edukacyjnego. Dalsza dystrybucja zgodna z zasadami Twojej organizacji. +- Podać je w linii poleceń: + +```bash +-o '{"sysName":"1.3.6.1.2.1.1.5.0","sysDescr":"1.3.6.1.2.1.1.1.0"}' +``` + +- Lub zmodyfikować domyślny słownik w kodzie: + +```python +default_oids = { + "sysName": "1.3.6.1.2.1.1.5.0", + "sysDescr": "1.3.6.1.2.1.1.1.0", + ... +} +``` + +## Licencja + +Projekt open-source przeznaczony do użytku wewnętrznego lub edukacyjnego. Dalsza dystrybucja zgodna z zasadami Twojej organizacji. \ No newline at end of file