Update README.md

This commit is contained in:
gru
2025-05-06 11:02:57 +02:00
parent 5eb9ef8cc1
commit 0f4fd184de

View File

@@ -3,53 +3,76 @@ SNMP Multi-Subnet Scanner
Opis 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 Funkcje
-------- --------
- Obsługa wielu podsieci (CIDR) - Obsługa wielu podsieci w formacie CIDR (z linii poleceń lub pliku)
- Wsparcie dla standardowych OID-ów: sysName, sysDescr, sysLocation, sysContact - Wsparcie dla standardowych OID-ów (domyślnie tylko `sysName`, inne opcjonalnie)
- Wydajne skanowanie z użyciem ThreadPoolExecutor (6 wątków) - Możliwość podania niestandardowych OID-ów w formacie JSON
- Ignorowanie hostów, które nie odpowiedziały (timeout lub brak danych) - 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 - Czytelna tabela wyników w terminalu
Wymagania Wymagania
---------- ----------
- Python 3.6+ - Python 3.6+
- Zainstalowany snmpget (część pakietu net-snmp) - Zainstalowane narzędzie snmpget (część pakietu net-snmp)
Na Debian/Ubuntu: Na Debian/Ubuntu:
sudo apt install snmp sudo apt install snmp
Użycie Użycie
------- -------
python snmp_scan.py <subnet1> [subnet2 subnet3 ...] [-c community] python snmp_scan.py <subnet1> [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: Przykłady
python snmp_scan.py 10.87.2.0/24 ----------
Skan jednej podsieci:
python snmp_scan.py 10.87.2.0/24
Skan wielu podsieci z niestandardowym community: Skan wielu podsieci z niestandardowym community:
python snmp_scan.py 10.87.2.0/24 10.88.1.0/24 -c moje_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 Przykładowy wynik
------------------ ------------------
IP sysName sysDescr sysLocation sysContact IP sysName sysDescr sysLocation sysContact
-------------------------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------
10.87.2.1 cisco-router Cisco IOS Software... Serwerownia admin@example.com 10.87.2.1 cisco-router Cisco IOS Software... Serwerownia admin@example.com
10.87.2.2 rb750 RouterOS RB750Gr3 ... Rack1 noc@firma.pl 10.87.2.2 rb750 RouterOS RB750Gr3 ... Rack1 noc@firma.pl
Dostosowanie Dostosowanie
------------- -------------
Aby dodać więcej OID-ów do zapytań, edytuj słownik `oids` w kodzie: Aby dodać więcej OID-ów do zapytań, możesz:
- Podać je w linii poleceń:
oids = { -o '{"sysName":"1.3.6.1.2.1.1.5.0","sysDescr":"1.3.6.1.2.1.1.1.0"}'
"sysName": "1.3.6.1.2.1.1.5.0", - Lub zmodyfikować domyślny słownik w kodzie:
"sysDescr": "1.3.6.1.2.1.1.1.0", default_oids = {
... "sysName": "1.3.6.1.2.1.1.5.0",
} "sysDescr": "1.3.6.1.2.1.1.1.0",
...
}
Licencja 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.