Pomyślałem, że wstawię skrypt, który mam nadzieję, aby zaoszczędzić kilka godzin pracy na składni i badaniach stron podręcznika
a) Plik SingleIP, IP Range lub IPList
b) nazwa skryptu do uruchomienia na adresie IP / zakresie (rzeczywisty skrypt typu sh / ksh unix)
c) opcjonalnie wykonaj skanowanie nmap dla otwartego portu 22 (tj. podsieci z niektórymi maszynami innymi niż Linux)
-Chce unikać adresów IP, z którymi nie można się połączyć, unikając możliwości dalszego poprawnego działania skryptu
d) opcjonalnie uruchom komendę pscp, aby automatycznie buforować klucz hosta (putty nie robi tego automatycznie)
Ta partia zakłada:
1. masz pełny pakiet PuTTY i klucz SSH zainstalowany w C: \ Program Files \ PuTTY \
2. pliki wsadowe / skrypty / IPlist zainstalowane w C: \ Program Files \ PuTTY \ scripts \
3. Katalogi robocze NMAP i PuTTY znajdują się w ścieżce poleceń
https://www.harmonyhit.com/PuttyBatch.bat
Jest to szczególnie przydatne w przypadku posiadania jednego skryptu (takiego jak aktualizacja certyfikatu SSL) na wielu komputerach
Oto kompletny plik wsadowy:
@ECHO WYŁ
rem Musisz zmodyfikować sekcję CACHEKEY i SCRIPT, aby odzwierciedlić lokalizację klucza SSH
ustaw IPFILE = IPList_temp.txt
ustaw runagain = n
ustaw OPCJĘ = 1
ustaw ZAKRES =
ustaw IP =
ustaw SCAN = n
ustaw KEYCACHE = n
:OPCJA
CLS
ECHO (katalog roboczy jest ustawiony na C: \ Program Files \ PuTTY \ scripts \)
ECHO.
ECHO 1. Pojedyncze IP
ECHO 2. Plik listy IP
ECHO 3. Zakres IP
ECHO.
set / p OPTION = "Wybierz typ IP:"
JEŚLI% OPCJI% == 3 GOTO IPRANGE
JEŚLI% OPCJI% == 2 GOTO IPLIST
JEŚLI% OPCJI% == 1 GOTO SINGLEIP
echo Wybierz prawidłową opcję
OPCJA GOTO
:ZAKRES IP
ECHO Wprowadź zakresy adresów IP, jak w poniższym przykładzie. Użyj spacji między wieloma zakresami:
ECHO, tj. „10.21.0.15–99 10.21.1.15–100”
set / p RANGE = Wprowadź zakres:
echo% ZAKRES%>% IPFILE%
GOTO SCRIPTNAME
: SINGLEIP
set / p IP = Wprowadź adres IP:
echo% IP%>% IPFILE%
GOTO SCRIPTNAME
: IPLIST
set / p IP = Wprowadź nazwę pliku IPList:
kopiuj / Y% IP%% IPFILE%
GOTO SCRIPTNAME
: SCRIPTNAME
set / p SCRIPT = Wpisz nazwę skryptu:
jeśli nie istnieje% SCRIPT% (
nazwa pliku echa nie istnieje!
GOTO SCRIPTNAME)
ECHO.
set / p SCAN = Czy najpierw skanuje Nmap? (Zalecana):
jeśli% SCAN% == n GOTO: RUNCACHE
rem Sprawdź, czy typ IP to „zakres”, ponieważ nmap nie może odczytać zakresu IP z pliku i należy wpisać bezpośrednio w poleceniu nmap
JEŚLI% OPCJI% == 3 GOTO NMAPRANGE
: NMAP
echo Skanowanie adresów IP dla portu 22 otwarte ...
nmap --open -n -p22 -iL% IPFILE% -oG - | findstr / E Up> nmap_temp.txt
GOTO AFTERNMAP
: NMAPRANGE
echo Skanowanie adresów IP dla portu 22 otwarte ...
nmap --open -n -p22% ZAKRES% -oG - | findstr / E Up> nmap_temp.txt
: AFTERNMAP
echo GOTOWE
formatowanie rem nmap jest nieprawidłowe, poniższe usuwa dodatkowe informacje
dla / f "tokenów = 2" %% A w (nmap_temp.txt) wykonaj echo %% A >> nmap_temp2.txt
rem usuwa ukryte miejsce na końcu adresu IP (wymaga „repl” znajduje się w katalogu plików wsadowych)
wpisz „nmap_temp2.txt” | repl "" "">% IPFILE%
: RUNCACHE
set / p KEYCACHE = Skanuj i buforuj klucz SSH (t / n)?
jeśli% KEYCACHE% == n GOTO SCRIPT
: CACHEKEY
rem Uruchom wszystkie adresy IP, aby buforować klucz hosta SSH, jeśli jeszcze nie jest buforowany
for / F "tokens = *" %% A in (% IPFILE%) do (echo y | "C: \ Program Files \ PuTTY \ pscp.exe" -l root -i "C: \ Program Files \ PuTTY \ SSH .ppk "-touch %% A: / tmp / test)
:SCENARIUSZ
dla / F "tokenów = 1" %% A w (% IPFILE%) do ("C: \ Program Files \ PuTTY \ putty.exe" -ssh %% A -t -l root -i "C: \ Program Files \ PuTTY \ SSH.ppk "-m" C: \ Program Files \ PuTTY \ scripts \% SCRIPT% ")
jeśli istnieją nmap_temp.txt (del nmap_temp.txt)
jeśli istnieją nmap_temp2.txt (del nmap_temp2.txt)
set / p runagain = "Naciśnij Enter, aby zakończyć lub y, aby uruchomić ponownie"
jeśli% runagain% == y OPCJA GOTO
-m
przełącznika z Plink, ponieważ pozwala on określić polecenie bezpośrednio w wierszu poleceń, patrz moja odpowiedź .