Update README.md
This commit is contained in:
parent
0f4fd184de
commit
e5962964f4
102
README.md
102
README.md
@ -1,78 +1,110 @@
|
|||||||
SNMP Multi-Subnet Scanner
|
# SNMP Multi-Subnet Scanner
|
||||||
=========================
|
|
||||||
|
|
||||||
Opis
|
## 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.
|
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)
|
- Obsługa wielu podsieci w formacie CIDR (z linii poleceń lub pliku)
|
||||||
- Wsparcie dla standardowych OID-ów (domyślnie tylko `sysName`, inne opcjonalnie)
|
- Wsparcie dla standardowych OID-ów (domyślnie tylko `sysName`, inne opcjonalnie)
|
||||||
- Możliwość podania niestandardowych OID-ów w formacie JSON
|
- 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)
|
- Dzieli duże sieci na mniejsze (domyślnie /24)
|
||||||
- Obsługa timeoutów oraz pomijanie hostów bez odpowiedzi
|
- Obsługa timeoutów oraz pomijanie hostów bez odpowiedzi
|
||||||
- Eksport wyników do pliku CSV (z możliwością nazwania pliku)
|
- 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+
|
||||||
- Zainstalowane narzędzie snmpget (część pakietu net-snmp)
|
- Zainstalowane narzędzie `snmpget` (część pakietu `net-snmp`)
|
||||||
|
|
||||||
Na Debian/Ubuntu:
|
**Na Debian/Ubuntu:**
|
||||||
|
|
||||||
|
```bash
|
||||||
sudo apt install snmp
|
sudo apt install snmp
|
||||||
|
```
|
||||||
|
|
||||||
Użycie
|
## Użycie
|
||||||
-------
|
|
||||||
|
```bash
|
||||||
python snmp_scan.py <subnet1> [subnet2 subnet3 ...] [opcje]
|
python snmp_scan.py <subnet1> [subnet2 subnet3 ...] [opcje]
|
||||||
|
```
|
||||||
|
|
||||||
Opcje:
|
### 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ę)
|
|
||||||
|
|
||||||
Przykłady
|
- `-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"}'`)
|
||||||
Skan jednej podsieci:
|
- `-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
|
||||||
|
|
||||||
|
```bash
|
||||||
python snmp_scan.py 10.87.2.0/24
|
python snmp_scan.py 10.87.2.0/24
|
||||||
|
```
|
||||||
|
|
||||||
Skan wielu podsieci z niestandardowym community:
|
### Skan wielu podsieci z niestandardowym community
|
||||||
|
|
||||||
|
```bash
|
||||||
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:
|
### 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
|
python snmp_scan.py 172.16.0.0/16 -w 20 -p 24 -f wynik.csv
|
||||||
|
```
|
||||||
|
|
||||||
Wczytywanie listy podsieci z pliku:
|
### Wczytywanie listy podsieci z pliku
|
||||||
python snmp_scan.py -s subnets.txt -c public -f wynik.csv
|
|
||||||
|
|
||||||
Przykładowy plik subnets.txt:
|
Zawartość `subnets.txt`:
|
||||||
|
|
||||||
|
```
|
||||||
10.0.0.0/24
|
10.0.0.0/24
|
||||||
192.168.100.0/24
|
192.168.100.0/24
|
||||||
|
```
|
||||||
|
|
||||||
Przykładowy wynik
|
Uruchomienie:
|
||||||
------------------
|
|
||||||
|
```bash
|
||||||
|
python snmp_scan.py -s subnets.txt -c public -f wynik.csv
|
||||||
|
```
|
||||||
|
|
||||||
|
## 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ń, możesz:
|
Aby dodać więcej OID-ów do zapytań, możesz:
|
||||||
|
|
||||||
- Podać je w linii poleceń:
|
- 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"}'
|
-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:
|
- Lub zmodyfikować domyślny słownik w kodzie:
|
||||||
|
|
||||||
|
```python
|
||||||
default_oids = {
|
default_oids = {
|
||||||
"sysName": "1.3.6.1.2.1.1.5.0",
|
"sysName": "1.3.6.1.2.1.1.5.0",
|
||||||
"sysDescr": "1.3.6.1.2.1.1.1.0",
|
"sysDescr": "1.3.6.1.2.1.1.1.0",
|
||||||
...
|
...
|
||||||
}
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Licencja
|
||||||
|
|
||||||
Licencja
|
|
||||||
---------
|
|
||||||
Projekt open-source przeznaczony do użytku wewnętrznego lub edukacyjnego. 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.
|
Loading…
x
Reference in New Issue
Block a user