diff --git a/README.md b/README.md index 360fe58..6643a93 100644 --- a/README.md +++ b/README.md @@ -3,53 +3,76 @@ SNMP Multi-Subnet Scanner Opis ----- -Ten skrypt w Pythonie umożliwia skanowanie wielu podsieci IPv4 i pobieranie informacji SNMP (v2c) z urządzeń sieciowych, takich jak Mikrotik, Cisco, itp. Obsługuje multithreading (6 wątków) dla przyspieszenia pracy i pomija adresy IP, które nie odpowiedziały na żadne zapytania SNMP. +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 -------- -- Obsługa wielu podsieci (CIDR) -- Wsparcie dla standardowych OID-ów: sysName, sysDescr, sysLocation, sysContact -- Wydajne skanowanie z użyciem ThreadPoolExecutor (6 wątków) -- Ignorowanie hostów, które nie odpowiedziały (timeout lub brak danych) +- 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 +- 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 ---------- - Python 3.6+ -- Zainstalowany snmpget (część pakietu net-snmp) +- Zainstalowane narzędzie snmpget (część pakietu net-snmp) Na Debian/Ubuntu: sudo apt install snmp Użycie ------- - python snmp_scan.py [subnet2 subnet3 ...] [-c community] + python snmp_scan.py [subnet2 subnet3 ...] [opcje] -Przykłady: +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ę) - Skan jednej podsieci: - python snmp_scan.py 10.87.2.0/24 +Przykłady +---------- +Skan jednej podsieci: + python snmp_scan.py 10.87.2.0/24 - Skan wielu podsieci z niestandardowym community: - python snmp_scan.py 10.87.2.0/24 10.88.1.0/24 -c moje_community +Skan wielu podsieci z niestandardowym community: + 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: + python snmp_scan.py 172.16.0.0/16 -w 20 -p 24 -f wynik.csv + +Wczytywanie listy podsieci z pliku: + python snmp_scan.py -s subnets.txt -c public -f wynik.csv + +Przykładowy plik subnets.txt: + 10.0.0.0/24 + 192.168.100.0/24 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 +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 ------------- -Aby dodać więcej OID-ów do zapytań, edytuj słownik `oids` w kodzie: - -oids = { - "sysName": "1.3.6.1.2.1.1.5.0", - "sysDescr": "1.3.6.1.2.1.1.1.0", - ... -} +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 na potrzeby wewnętrzne lub edukacyjne. Dalsza dystrybucja zgodna z zasadami Twojej organizacji. +Projekt open-source przeznaczony do użytku wewnętrznego lub edukacyjnego. Dalsza dystrybucja zgodna z zasadami Twojej organizacji.