snmp_skaner/README.md
2025-05-06 11:27:40 +02:00

3.1 KiB
Raw Permalink Blame History

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.

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
  • 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+
  • Zainstalowane narzędzie snmpget (część pakietu net-snmp)

Na Debian/Ubuntu:

sudo apt install snmp

Użycie

python snmp_scan.py <subnet1> [subnet2 subnet3 ...] [opcje]

Opcje

  • -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ę)

Przykłady

Skan jednej podsieci

python scan.py 172.16.0.0/24 -c public -f wynik.csv -w 10 -p 32

Skan wielu podsieci z niestandardowym community

python 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 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:

python 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

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

Autor Mateusz Gruszczyński @linuxiarz.pl (https://www.linuxiarz.pl) Projekt open-source przeznaczony do użytku wewnętrznego lub edukacyjnego. Dalsza dystrybucja zgodna z zasadami Twojej organizacji.