Solo pensé en insertar el guión que hice para, con suerte, ahorrarle a algunas personas horas de sintaxis e investigación de la página de manual
a) Archivo SingleIP, IP Range o IPList
b) nombre de script para ejecutar en el IP / rango (script de tipo sh / ksh de Unix real)
c) opcionalmente, haga un escaneo nmap para el puerto 22 abierto (es decir, subred con algunas máquinas que no sean Linux)
-Quiero evitar que IP putty no pueda conectarse, evitando que el script pueda continuar correctamente
d) opcionalmente, ejecute el comando pscp para autocachear la clave del host (la masilla no hace esto automáticamente)
Este lote asume:
1. tiene instalado el paquete completo PuTTY y la clave SSH en C: \ Archivos de programa \ PuTTY \
2. archivos por lotes / scripts / IPlist instalados en C: \ Archivos de programa \ PuTTY \ scripts \
3. Los directorios de trabajo NMAP y PuTTY están en su ruta de comando
https://www.harmonyhit.com/PuttyBatch.bat
Esto es principalmente útil para tener un solo script (como actualizar un certificado SSL) en una variedad de máquinas
Aquí está el archivo por lotes completo:
@ECHO OFF
rem Debe modificar la sección CACHEKEY y SCRIPT para reflejar la ubicación de su clave SSH
establecer IPFILE = IPList_temp.txt
establecer runagain = n
establecer OPCIÓN = 1
establecer RANGE =
establecer IP =
establecer SCAN = n
establecer KEYCACHE = n
:OPCIÓN
CLS
ECHO (el directorio de trabajo está configurado en C: \ Archivos de programa \ PuTTY \ scripts \)
ECO.
ECHO 1. IP única
ECHO 2. Archivo de lista de IP
ECHO 3. Rango de IP
ECO.
set / p OPTION = "Elija el tipo de IP:"
SI% OPCIÓN% == 3 GOTO IPRANGE
IF% OPTION% == 2 GOTO IPLIST
IF% OPTION% == 1 GOTO SINGLEIP
echo Seleccione una opción válida
OPCIÓN GOTO
: IPRANGE
ECHO Ingrese los rangos de IP como en el siguiente ejemplo. Use un espacio entre múltiples rangos:
ECHO, es decir, "10.21.0.15-99 10.21.1.15-100"
set / p RANGE = Ingrese el rango:
echo% RANGE%>% IPFILE%
GOTO SCRIPTNAME
: SINGLEIP
set / p IP = Ingrese IP:
echo% IP%>% IPFILE%
GOTO SCRIPTNAME
: IPLIST
set / p IP = Ingrese el nombre del archivo IPList:
copiar / Y% IP%% IPFILE%
GOTO SCRIPTNAME
: SCRIPTNAME
set / p SCRIPT = Ingrese el nombre del script:
si no existe% SCRIPT% (
echo nombre de archivo no existe!
GOTO SCRIPTNAME)
ECO.
set / p SCAN = ¿Escanea Nmap primero? (recomendado):
if% SCAN% == n GOTO: RUNCACHE
rem Compruebe si el tipo de IP es "rango" ya que nmap no puede leer un rango de IP del archivo y debe escribirse directamente en el comando nmap
IF% OPTION% == 3 GOTO NMAPRANGE
: NMAP
echo Escaneo de IP para el puerto 22 abierto ...
nmap --open -n -p22 -iL% IPFILE% -oG - | Findstr / E Up> nmap_temp.txt
GOTO AFTERNMAP
: NMAPRANGE
echo Escaneo de IP para el puerto 22 abierto ...
nmap --open -n -p22% RANGE% -oG - | Findstr / E Up> nmap_temp.txt
: AFTERNMAP
echo HECHO
El formato rem nmap no es correcto, lo siguiente elimina información adicional
para / f "tokens = 2" %% A en (nmap_temp.txt) do echo %% A >> nmap_temp2.txt
rem elimina el espacio oculto al final de la IP (requiere que "repl" esté en el directorio de archivos por lotes)
escriba "nmap_temp2.txt" | repl "" "">% IPFILE%
: RUNCACHE
set / p KEYCACHE = Escanear y almacenar en caché la clave SSH (y / n)?
if% KEYCACHE% == n GOTO SCRIPT
: CACHEKEY
rem Ejecutar a través de todas las IP para almacenar en caché la clave de host SSH si aún no está en caché
para / F "tokens = *" %% A en (% IPFILE%) do (echo y | "C: \ Program Files \ PuTTY \ pscp.exe" -l root -i "C: \ Program Files \ PuTTY \ SSH .ppk "-touch %% A: / tmp / test)
:GUIÓN
para / F "tokens = 1" %% A en (% IPFILE%) do ("C: \ Archivos de programa \ PuTTY \ putty.exe" -ssh %% A -t -l root -i "C: \ Archivos de programa \ PuTTY \ SSH.ppk "-m" C: \ Archivos de programa \ PuTTY \ scripts \% SCRIPT% ")
si existe nmap_temp.txt (del nmap_temp.txt)
si existe nmap_temp2.txt (del nmap_temp2.txt)
set / p runagain = "Presione Enter para finalizar o y para volver a ejecutar"
if% runagain% == y GOTO OPTION
-m
interruptor con Plink, ya que permite especificar el comando directamente en su línea de comando, vea mi respuesta .