Ho solo pensato di inserire la sceneggiatura che ho realizzato per salvare alcune persone ore di sintassi e ricerche sulla pagina man
a) File SingleIP, IP Range o IPList
b) nome dello script da eseguire sull'IP / intervallo (script di tipo sh / ksh unix effettivo)
c) opzionalmente eseguire nmap scan per la porta 22 aperta (ovvero sottorete con alcune macchine non Linux)
-Vuoi evitare IP a cui Putty non può connettersi, evitando che gli script possano continuare correttamente
d) facoltativamente esegui il comando pscp per memorizzare automaticamente la chiave host (putty non lo fa automaticamente)
Questo batch presuppone:
1. hai il pacchetto completo PuTTY e la chiave SSH installati in C: \ Programmi \ PuTTY \
2. file batch / script / elenco IP installati in C: \ Programmi \ PuTTY \ scripts \
3. Le directory di lavoro NMAP e PuTTY si trovano nel percorso del comando
https://www.harmonyhit.com/PuttyBatch.bat
Ciò è utile soprattutto per avere un singolo script (come l'aggiornamento di un certificato SSL) su una vasta gamma di macchine
Ecco il file batch completo:
@ECHO OFF
rem È necessario modificare la sezione CACHEKEY e SCRIPT per riflettere la posizione della chiave SSH
set IPFILE = IPList_temp.txt
set runagain = n
impostare OPZIONE = 1
imposta RANGE =
imposta IP =
imposta SCAN = n
impostare KEYCACHE = n
:OPZIONE
CLS
ECHO (la directory di lavoro è impostata su C: \ Programmi \ PuTTY \ scripts \)
ECO.
ECHO 1. IP singolo
ECHO 2. File dell'elenco IP
ECHO 3. Intervallo IP
ECO.
set / p OPTION = "Scegli il tipo di IP:"
SE% OPZIONE% == 3 GOTO IPRANGE
SE% OPZIONE% == 2 GOTO IPLIST
IF% OPTION% == 1 GOTO SINGLEIP
echo Seleziona un'opzione valida
OPZIONE GOTO
: IPRange
ECHO Immettere gli intervalli IP come nell'esempio seguente. Utilizzare uno spazio tra più intervalli:
ECHO cioè "10.21.0.15-99 10.21.1.15-100"
set / p RANGE = Inserisci intervallo:
echo% RANGE%>% IPFILE%
GOTO SCRIPTNAME
: SINGLEIP
set / p IP = Inserisci IP:
echo% IP%>% IPFILE%
GOTO SCRIPTNAME
: elenco IPList
set / p IP = Inserisci il nome file dell'elenco indirizzi IP:
copia / Y% IP%% IPFILE%
GOTO SCRIPTNAME
: SCRIPTNAME
set / p SCRIPT = Inserisci il nome dello script:
se non esiste% SCRIPT% (
il nome file echo non esiste!
GOTO SCRIPTNAME)
ECO.
set / p SCAN = Nmap esegue prima la scansione? (consigliato):
se% SCAN% == n GOTO: RUNCACHE
rem Controlla se il tipo IP è "range" poiché nmap non può leggere un intervallo IP dal file e deve essere digitato direttamente nel comando nmap
SE% OPZIONE% == 3 GOTO NMAPRANGE
: NMAP
echo Scansione IP per porta 22 aperta ...
nmap --open -n -p22 -iL% IPFILE% -oG - | findstr / E Su> nmap_temp.txt
GOTO AFTERNMAP
: NMAPRANGE
echo Scansione IP per porta 22 aperta ...
nmap --open -n -p22% RANGE% -oG - | findstr / E Su> nmap_temp.txt
: AFTERNMAP
eco FATTO
La formattazione rem nmap non è corretta, quanto segue rimuove le informazioni extra
per / f "tokens = 2" %% A in (nmap_temp.txt) esegui l'eco %% A >> nmap_temp2.txt
rem rimuove lo spazio nascosto alla fine dell'IP (richiede che "repl" sia nella directory del file batch)
digitare "nmap_temp2.txt" | sostitu "" "">% IPFILE%
: RUNCACHE
set / p KEYCACHE = Scansiona e memorizza nella cache la chiave SSH (y / n)?
se% KEYCACHE% == n GOTO SCRIPT
: CACHEKEY
rem Esegui tutti gli IP per memorizzare nella cache la chiave host SSH se non è già stata memorizzata nella cache
per / F "token = *" %% A in (% IPFILE%) do (echo y | "C: \ Programmi \ PuTTY \ pscp.exe" -l root -i "C: \ Programmi \ PuTTY \ SSH .ppk "-touch %% A: / tmp / test)
: SCRIPT
per / F "token = 1" %% A in (% IPFILE%) do ("C: \ Programmi \ PuTTY \ putty.exe" -ssh %% A -t -l root -i "C: \ Programmi \ PuTTY \ SSH.ppk "-m" C: \ Programmi \ PuTTY \ scripts \% SCRIPT% ")
se esiste nmap_temp.txt (del nmap_temp.txt)
se esiste nmap_temp2.txt (del nmap_temp2.txt)
set / p runagain = "Premi Invio per finire o y per rieseguire"
se% runagain% == y GOTO OPTION
-m
switch con Plink, poiché consente di specificare il comando direttamente sulla sua riga di comando, vedere la mia risposta .