Я просто подумав, що я вставлю сценарій, який я створив, щоб, сподіваючись, врятувати деяким людям години синтаксису та вивчення сторінок людини
a) Файл SingleIP, діапазон IP або IPList
b) ім'я сценарію для запуску в IP / діапазоні (фактичний сценарій Unix sh / ksh)
в) необов'язково сканувати nmap для відкритого порту 22 (тобто підмережі з деякими машинами, що не є Linux)
-як уникати IP-шпаклівки, не можна підключитися, уникаючи можливості продовження сценарію належним чином
d) необов'язково запустити команду pscp для автоматичного кешування хост-ключа (putty не робить цього автоматично)
Ця партія передбачає:
1. у вас встановлений повний пакет PuTTY і ключ SSH в C: \ Program Files \ PuTTY \
2. пакетні / скрипти / файли IPlist, встановлені в C: \ Program Files \ PuTTY \ scriptpts \
3. Робочі каталоги NMAP та PuTTY знаходяться у вашому командному шляху
https://www.harmonyhit.com/PuttyBatch.bat
Це в основному корисно для наявності одного сценарію (наприклад, оновлення сертифіката SSL) на різних машинах
Ось повний пакетний файл:
@ECHO OFF
rem Ви повинні змінити розділ CACHEKEY і SCRIPT, щоб відобразити ваше місцезнаходження SSH-ключа
встановити IPFILE = IPList_temp.txt
встановити збиток = n
встановити OPTION = 1
встановити RANGE =
встановити IP =
встановити SCAN = n
встановити KEYCACHE = n
: ВАРІАНТ
CLS
ECHO (Робочий каталог встановлено на C: \ Program Files \ PuTTY \ script) \)
ECHO.
ECHO 1. Єдиний IP
ECHO 2. Файл списку IP
ECHO 3. Діапазон IP
ECHO.
set / p OPTION = "Виберіть тип IP:"
ЯКЩО ВАРІАНТ% == 3 GOTO IPRANGE
ЯКЩО ВАРІАНТ% == 2 GOTO IPLIST
ЯКЩО ВАРІАНТ% == 1 GOTO SINGLEIP
echo Будь ласка, виберіть дійсну опцію
ГОТО ОПЦІЯ
: IPRANGE
ECHO Введіть діапазон IP-адрес, як у наступному прикладі. Використовуйте пробіл між кількома діапазонами:
ECHO, тобто "10.21.0.15-99 10.21.1.15-100"
set / p RANGE = Введіть діапазон:
echo% RANGE%>% IPFILE%
GOTO SCRIPTNAME
: SINGLEIP
set / p IP = Введіть IP:
echo% IP%>% IPFILE%
GOTO SCRIPTNAME
: IPLIST
set / p IP = Введіть ім'я файлу IPList:
копія / Y% IP%% IPFILE%
GOTO SCRIPTNAME
: SCRIPTNAME
set / p SCRIPT = Введіть назву сценарію:
якщо не існує% SCRIPT% (
назва файлу echo не існує!
GOTO SCRIPTNAME)
ECHO.
set / p SCAN = Чи слід сканувати Nmap спочатку? (рекомендується):
якщо% SCAN% == n GOTO: RUNCACHE
rem Перевірте, чи тип IP "діапазон", оскільки nmap не може прочитати діапазон IP-файлів з файлу, а потрібно вводити безпосередньо команду nmap
ЯКЩО ВАРІАНТ% == 3 GOTO NMAPRANGE
: NMAP
ехо Сканування IP-адрес для порту 22 відкрито ...
nmap --open -n -p22 -iL% IPFILE% -oG - | findstr / E вгору> nmap_temp.txt
ГОТО ПІСЛЯ МАРТУ
: NMAPRANGE
ехо Сканування IP-адрес для порту 22 відкрито ...
nmap --open -n -p22% RANGE% -oG - | findstr / E вгору> nmap_temp.txt
: ПІСЛЯ КАРТИ
відлуння зроблено
Форматування rem nmap невірне, далі видаляється додаткова інформація
для / f "tokens = 2" %% A в (nmap_temp.txt) робити відлуння %% A >> nmap_temp2.txt
rem видалити прихований простір наприкінці IP (потрібно, щоб "repl" знаходився в каталозі пакетного файлу)
введіть "nmap_temp2.txt" | repl "" "">% IPFILE%
: RUNCACHE
set / p KEYCACHE = Сканування та кешування SSH клавіші (в / п)?
якщо% KEYCACHE% == n GOTO SCRIPT
: CACHEKEY
rem Запустіть усі IP-адреси, щоб кешувати ключ хоста SSH, якщо він ще не кешований
for / F "tokens = *" %% A in (% IPFILE%) do (echo y | "C: \ Program Files \ PuTTY \ pscp.exe" -l root -i "C: \ Program Files \ PuTTY \ SSH .ppk "-натисніть %% A: / tmp / test)
: SCRIPT
for / F "tokens = 1" %% A in (% IPFILE%) do ("C: \ Програмні файли \ PuTTY \ putty.exe" -ssh %% A -t -l root -i "C: \ Program Files \ PuTTY \ SSH.ppk "-m" C: \ програмні файли \ PuTTY \ скрипти \% SCRIPT% ")
якщо існує nmap_temp.txt (del nmap_temp.txt)
якщо існує nmap_temp2.txt (del nmap_temp2.txt)
set / p runagain = "Натисніть Enter, щоб закінчити, або y, щоб повторно"
якщо% runagain% == y GOTO OPTION
-m
перемикач з Plink, оскільки це дозволяє вказувати команду безпосередньо у своєму командному рядку, дивіться мою відповідь .