Просто подумал, что вставлю сделанный мной скрипт, чтобы, надеюсь, сэкономить несколько часов на синтаксисе и изучении страниц руководства.
a) файл SingleIP, IP Range или IPList
б) имя скрипта для запуска по IP / диапазону (фактический скрипт типа unix sh / ksh)
c) при желании можно выполнить сканирование nmap для открытия порта 22 (т. е. подсети с некоторыми машинами, отличными от Linux)
-чтобы избежать IP-адресов, к которым не может подключиться замазка, избегая возможности продолжения работы скрипта
d) при желании запустите команду pscp, чтобы автоматически кэшировать ключ хоста (putty не делает этого автоматически)
Эта партия предполагает:
1. у вас есть полный пакет PuTTY и ключ SSH, установленные в C: \ Program Files \ PuTTY \
2. пакетные / scripts / IPlist файлы, установленные в C: \ Program Files \ PuTTY \ scripts \
3. Рабочие каталоги NMAP и PuTTY находятся в вашем командном каталоге
https://www.harmonyhit.com/PuttyBatch.bat
Это в основном полезно для использования одного сценария (например, обновления SSL-сертификата) на нескольких компьютерах
Вот полный пакетный файл:
@ECHO OFF
rem Вы должны изменить раздел CACHEKEY и SCRIPT, чтобы отразить местоположение вашего ключа SSH
set IPFILE = IPList_temp.txt
установить runagain = n
установите OPTION = 1
установить RANGE =
установить IP =
установить SCAN = n
установите KEYCACHE = n
: ВАРИАНТ
ЦБС
ECHO (Рабочий каталог установлен в C: \ Program Files \ PuTTY \ scripts \)
ECHO.
ЭХО 1. Одиночный IP
ECHO 2. Файл списка IP
ECHO 3. IP Range
ECHO.
set / p OPTION = "Выберите тип IP:"
IF% OPTION% == 3 GOTO IPRANGE
IF% OPTION% == 2 GOTO IPLIST
IF% OPTION% == 1 GOTO SINGLEIP
эхо Пожалуйста, выберите правильный вариант
GOTO ВАРИАНТ
: IPRange
ECHO Введите диапазон IP-адресов, как в следующем примере. Используйте пробел между несколькими диапазонами:
ECHO т.е. "10.21.0.15-99 10.21.1.15-100"
set / p RANGE = Введите диапазон:
эхо% RANGE%>% IPFILE%
GOTO SCRIPTNAME
: SINGLEIP
set / p IP = Введите IP:
эхо% IP%>% IPFILE%
GOTO SCRIPTNAME
: IPList
set / p IP = Введите имя файла IPList:
копия / Y% IP%% IPFILE%
GOTO SCRIPTNAME
: SCRIPTNAME
set / p SCRIPT = Введите имя скрипта:
если не существует% SCRIPT% (
эхо имя файла не существует!
GOTO SCRIPTNAME)
ECHO.
set / p SCAN = Сначала Nmap сканирует? (рекомендуемые):
если% SCAN% == n GOTO: RUNCACHE
rem Проверьте, является ли тип IP «диапазон», так как nmap не может прочитать диапазон IP из файла и должен быть введен непосредственно в команде nmap
IF% OPTION% == 3 GOTO NMAPRANGE
: NMAP
echo Сканирование IP-адресов для порта 22 открыть ...
nmap --open -n -p22 -iL% IPFILE% -oG - | findstr / E Up> nmap_temp.txt
GOTO AFTERNMAP
: NMAPRANGE
echo Сканирование IP-адресов для порта 22 открыть ...
nmap --open -n -p22% RANGE% -oG - | findstr / E Up> nmap_temp.txt
: AFTERNMAP
эхо сделано
неверное форматирование rem nmap, следующее удаляет лишнюю информацию
for / 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 в (% IPFILE%) делать (echo y | "C: \ Program Files \ PuTTY \ pscp.exe" -l root -i "C: \ Program Files \ PuTTY \ SSH .ppk "-touch %% A: / tmp / test)
: SCRIPT
для / F "токены = 1" %% A в (% 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% ")
если существует 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, так как он позволяет указывать команду непосредственно в командной строке, см. Мой ответ .