Pensei em inserir o script que fiz para, esperançosamente, salvar algumas pessoas de horas de pesquisa de sintaxe e de página de manual
a) Arquivo SingleIP, IP Range ou IPList
b) nome do script a ser executado no IP / intervalo (script do tipo sh / ksh unix real)
c) opcionalmente, faça a varredura do nmap para a porta 22 aberta (ou seja, sub-rede com algumas máquinas não Linux)
-Quer evitar IPs que a massa não possa se conectar, evitando que o script possa continuar corretamente
d) opcionalmente, execute o comando pscp para autocache a chave do host (a massa de vidraceiro não faz isso automaticamente)
Este lote assume:
1. você tem o pacote PuTTY completo e a chave SSH instalados em C: \ Arquivos de Programas \ PuTTY \
2. arquivos em lote / scripts / lista de IPs instalados em C: \ Arquivos de Programas \ PuTTY \ scripts \
3. Os diretórios de trabalho NMAP e PuTTY estão no seu caminho de comando
https://www.harmonyhit.com/PuttyBatch.bat
Isso é útil principalmente para ter um único script (como atualizar um certificado SSL) em uma variedade de máquinas
Aqui está o arquivo em lotes completo:
@ECHO OFF
rem Você deve modificar a seção CACHEKEY and SCRIPT para refletir o local da chave SSH
defina IPFILE = IPList_temp.txt
definir runagain = n
definir OPÇÃO = 1
definir RANGE =
definir IP =
definir SCAN = n
definir KEYCACHE = n
:OPÇÃO
CLS
ECHO (o diretório de trabalho está definido como C: \ Arquivos de Programas \ PuTTY \ scripts \)
ECO.
ECHO 1. IP único
ECHO 2. Arquivo da lista de IPs
ECHO 3. Faixa de IP
ECO.
set / p OPTION = "Escolha o tipo de IP:"
SE% OPTION% == 3 GOTO IPRANGE
SE% OPTION% == 2 GOTO IPLIST
SE% OPTION% == 1 GOTO SINGLEIP
eco Selecione uma opção válida
OPÇÃO GOTO
:INTERVALO DE IP
ECHO Insira o (s) intervalo (s) IP (s) como no exemplo a seguir. Use um espaço entre vários intervalos:
ECHO, ou seja, "10.21.0.15-99 10.21.1.15-100"
set / p RANGE = Insira o intervalo:
eco% RANGE%>% IPFILE%
GOTO SCRIPTNAME
: SINGLEIP
set / p IP = Digite o IP:
eco% IP%>% IPFILE%
GOTO SCRIPTNAME
: IPLIST
set / p IP = Digite o nome do arquivo IPList:
cópia / Y% IP%% IPFILE%
GOTO SCRIPTNAME
: SCRIPTNAME
set / p SCRIPT = Digite o nome do script:
se não existir% SCRIPT% (
nome do arquivo eco não existe!
GOTO SCRIPTNAME)
ECO.
set / p SCAN = O Nmap verifica primeiro? (recomendado):
se% SCAN% == n GOTO: RUNCACHE
rem Verifique se o tipo de IP é "range", pois o nmap não pode ler um range de IP do arquivo e deve ser digitado diretamente no comando nmap
SE% OPTION% == 3 GOTO NMAPRANGE
: NMAP
eco IPs de varredura para a porta 22 aberta ...
nmap --open -n -p22 -iL% IPFILE% -oG - | findstr / E Up> nmap_temp.txt
GOTO AFTERNMAP
: NMAPRANGE
eco IPs de varredura para a porta 22 aberta ...
nmap --open -n -p22% RANGE% -oG - | findstr / E Up> nmap_temp.txt
: AFTERNMAP
eco FEITO
Como a formatação rem nmap não está correta, o seguinte remove informações adicionais
para / f "tokens = 2" %% A em (nmap_temp.txt) faz eco de %% A >> nmap_temp2.txt
rem remove o espaço oculto no final do IP (requer que "repl" esteja no diretório de arquivos em lotes)
digite "nmap_temp2.txt" | repl "" "">% IPFILE%
: RUNCACHE
set / p KEYCACHE = Verificar e armazenar em cache a chave SSH (s / n)?
se% KEYCACHE% == n GOTO SCRIPT
: CACHEKEY
rem Execute todos os IPs para armazenar em cache a chave do host SSH, se ainda não estiver em cache
para / F "tokens = *" %% A em (% IPFILE%) do (eco | | C: \ Arquivos de Programas \ PuTTY \ pscp.exe "-l root -i" C: \ Arquivos de Programas \ PuTTY \ SSH .ppk "-touch %% A: / tmp / test)
:ROTEIRO
para / F "tokens = 1" %% A em (% IPFILE%) do ("C: \ Arquivos de Programas \ PuTTY \ putty.exe" -ssh %% A -t -l root -i "C: \ Arquivos de Programas \ PuTTY \ SSH.ppk "-m" C: \ Arquivos de Programas \ PuTTY \ scripts \% SCRIPT% ")
se existir nmap_temp.txt (del nmap_temp.txt)
se existir nmap_temp2.txt (del nmap_temp2.txt)
set / p runagain = "Pressione Enter para concluir ou y para executar novamente"
se% runagain% == y GOTO OPTION
-m
switch com o Plink, pois ele permite especificar o comando diretamente em sua linha de comando, veja minha resposta .