Je pensais juste insérer le script que j'avais créé pour, espérons-le, sauver des heures de recherche de syntaxe et de page de manuel
a) Fichier SingleIP, IP Range ou IPList
b) nom du script à exécuter sur l'IP / plage (script de type réel unix sh / ksh)
c) éventuellement faire une analyse nmap pour le port 22 ouvert (c'est-à-dire un sous-réseau avec certaines machines non Linux)
-veux éviter que le mastic IP ne puisse pas se connecter, évitant que le script puisse continuer correctement
d) éventuellement exécuter la commande pscp pour mettre en cache automatiquement la clé hôte (putty ne le fait pas automatiquement)
Ce lot suppose:
1. vous avez le package PuTTY complet et la clé SSH installés dans C: \ Program Files \ PuTTY \
2. Fichiers batch / scripts / IPlist installés dans C: \ Program Files \ PuTTY \ scripts \
3. Les répertoires de travail NMAP et PuTTY se trouvent dans votre chemin de commande
https://www.harmonyhit.com/PuttyBatch.bat
Ceci est surtout utile pour avoir un seul script (comme la mise à jour d'un certificat SSL) sur une gamme de machines
Voici le fichier batch complet:
@ÉCHO OFF
rem Vous devez modifier la section CACHEKEY et SCRIPT pour refléter l'emplacement de votre clé SSH
définir IPFILE = IPList_temp.txt
définir runagain = n
définir OPTION = 1
définir RANGE =
définir IP =
définir SCAN = n
définir KEYCACHE = n
:OPTION
CLS
ECHO (le répertoire de travail est défini sur C: \ Program Files \ PuTTY \ scripts \)
ÉCHO.
ECHO 1. IP unique
ECHO 2. Fichier de liste IP
ECHO 3. Plage IP
ÉCHO.
set / p OPTION = "Choisissez le type IP:"
SI% OPTION% == 3 GOTO IPRANGE
SI% OPTION% == 2 GOTO IPLIST
SI% OPTION% == 1 GOTO SINGLEIP
echo Veuillez sélectionner une option valide
OPTION GOTO
:PLAGE IP
ECHO Saisissez la ou les plages IP comme dans l'exemple suivant. Utilisez un espace entre plusieurs plages:
ECHO, c'est-à-dire "10.21.0.15-99 10.21.1.15-100"
set / p RANGE = Entrez la plage:
echo% RANGE%>% IPFILE%
GOTO SCRIPTNAME
: SINGLEIP
set / p IP = Entrez IP:
écho% IP%>% IPFILE%
GOTO SCRIPTNAME
: IPLIST
set / p IP = Entrez le nom de fichier IPList:
copie / Y% IP%% IPFILE%
GOTO SCRIPTNAME
: SCRIPTNAME
set / p SCRIPT = Entrez le nom du script:
s'il n'existe pas% SCRIPT% (
Le nom de fichier echo n'existe pas!
GOTO SCRIPTNAME)
ÉCHO.
set / p SCAN = Est-ce que Nmap scanne d'abord? (conseillé):
si% SCAN% == n GOTO: RUNCACHE
rem Vérifiez si le type IP est "plage" car nmap ne peut pas lire une plage IP à partir d'un fichier et doit être saisi directement dans la commande nmap
SI% OPTION% == 3 GOTO NMAPRANGE
: NMAP
echo Scanning IPs for port 22 open ...
nmap --open -n -p22 -iL% IPFILE% -oG - | findstr / E Up> nmap_temp.txt
GOTO AFTERNMAP
: NMAPRANGE
echo Scanning IPs for port 22 open ...
nmap --open -n -p22% RANGE% -oG - | findstr / E Up> nmap_temp.txt
: AFTERNMAP
écho TERMINÉ
rem formatage nmap n'est pas correct, ce qui suit supprime les informations supplémentaires
pour / f "tokens = 2" %% A dans (nmap_temp.txt) faire écho %% A >> nmap_temp2.txt
rem supprimer l'espace caché à la fin de l'IP (nécessite que "repl" soit dans le répertoire des fichiers batch)
tapez "nmap_temp2.txt" | repl "" "">% IPFILE%
: RUNCACHE
set / p KEYCACHE = Scanner et mettre en cache la clé SSH (o / n)?
si% KEYCACHE% == n GOTO SCRIPT
: CACHEKEY
rem Exécutez toutes les adresses IP pour mettre en cache la clé d'hôte SSH si elle n'est pas déjà mise en cache
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)
:SCÉNARIO
pour / F "tokens = 1" %% A dans (% 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% ")
s'il existe nmap_temp.txt (del nmap_temp.txt)
s'il existe nmap_temp2.txt (del nmap_temp2.txt)
set / p runagain = "Appuyez sur Entrée pour terminer ou sur y pour relancer"
si% runagain% == y OPTION GOTO
-m
switch avec Plink, car il permet de spécifier la commande directement sur sa ligne de commande, voir ma réponse .