Chỉ cần nghĩ rằng tôi đã chèn tập lệnh mà tôi đã thực hiện để hy vọng tiết kiệm cho một số người nghiên cứu cú pháp và trang con người
a) Tệp SingleIP, IP Range hoặc IPList
b) tên tập lệnh để chạy trên IP / phạm vi (tập lệnh loại sh / ksh thực tế)
c) tùy chọn thực hiện quét nmap cho cổng 22 mở (tức là mạng con với một số máy không phải là Linux)
-Muốn tránh IP putty không thể kết nối, tránh tập lệnh có thể tiếp tục đúng
d) tùy chọn chạy lệnh pscp để tự động khóa máy chủ (putty không tự động làm điều này)
Lô này giả định:
1. bạn có gói PuTTY đầy đủ và khóa SSH được cài đặt trong C: \ Program Files \ PuTTY \
2. Các tệp bó / tập lệnh / danh sách IP được cài đặt trong C: \ Chương trình tập tin \ PuTTY \ scripts \
3. Các thư mục làm việc NMAP và PuTTY nằm trong đường dẫn lệnh của bạn
https://www.harmonyhit.com/PuttyBatch.bat
Điều này chủ yếu hữu ích khi có một tập lệnh (chẳng hạn như cập nhật chứng chỉ SSL) trên một loạt các máy
Đây là tập tin hoàn chỉnh:
@ECHO TẮT
rem Bạn phải sửa đổi phần CACHEKEY và SCRIPT để phản ánh vị trí khóa SSH của bạn
đặt IPFILE = IPList_temp.txt
đặt runagain = n
đặt TÙY CHỌN = 1
đặt RANGE =
đặt IP =
đặt SCAN = n
đặt KEYCACHE = n
:LỰA CHỌN
CLS
ECHO (Thư mục làm việc được đặt thành C: \ Chương trình tập tin \ PuTTY \ scripts \)
ECHO.
ECHO 1. IP đơn
ECHO 2. Tệp danh sách IP
ECHO 3. Phạm vi IP
ECHO.
đặt / p OPTION = "Chọn loại IP:"
NẾU% TÙY CHỌN% == 3 GOTO IPRANGE
NẾU% TÙY CHỌN% == 2 GOTO IPLIST
NẾU% TÙY CHỌN% == 1 GOTO SINGLEIP
echo Vui lòng chọn một tùy chọn hợp lệ
TÙY CHỌN GOTO
:PHẠM VI IP
ECHO Nhập (các) dải IP như trong ví dụ sau. Sử dụng khoảng trắng giữa nhiều phạm vi:
ECHO tức là "10.21.0.15-99 10.21.1.15-100"
đặt / p RANGE = Nhập Phạm vi:
echo% RANGE%>% IPFILE%
GOTO SCRIPTNAME
: SINGLEIP
đặt / p IP = Nhập IP:
echo% IP%>% IPFILE%
GOTO SCRIPTNAME
: IPLIST
đặt / p IP = Nhập tên tệp IPList:
sao chép / Y% IP %% IPFILE%
GOTO SCRIPTNAME
: SCRIPTNAME
đặt / p SCRIPT = Nhập tên tập lệnh:
nếu không tồn tại% SCRIPT% (
tên tập tin echo không tồn tại!
GOTO SCRIPTNAME)
ECHO.
set / p SCAN = Quét Nmap trước? (khuyên dùng):
nếu% QUÉT% == n GOTO: RUNCACHE
rem Kiểm tra xem loại IP có phải là "phạm vi" không vì nmap không thể đọc phạm vi IP từ tệp và phải được nhập trực tiếp trong lệnh nmap
NẾU% TÙY CHỌN% == 3 GOTO NMAPRANGE
: NMAP
echo IP quét cho cổng 22 mở ...
nmap --open -n -p22 -iL% IPFILE% -oG - | findstr / E Up> nmap_temp.txt
GOTO SAU
: NMAPRANGE
echo IP quét cho cổng 22 mở ...
nmap --open -n -p22% RANGE% -oG - | findstr / E Up> nmap_temp.txt
: SAU
tiếng vang
định dạng rem nmap là không chính xác, sau đây loại bỏ thông tin bổ sung
for / f "tokens = 2" %% A trong (nmap_temp.txt) thực hiện echo %% A >> nmap_temp2.txt
rem xóa không gian ẩn ở cuối IP (yêu cầu "thay thế" trong thư mục tệp bó)
gõ "nmap_temp2.txt" | thay thế "" "">% IPFILE%
: CHẠY
đặt / p KEYCACHE = Quét và lưu trữ khóa SSH (y / n)?
nếu% KEYCACHE% == n GOTO SCRIPT
: TIẾNG ANH
rem Chạy qua tất cả các IP để lưu trữ Khóa máy chủ SSH nếu chưa được lưu vào bộ đệm
for / F "tokens = *" %% A in (% IPFILE%) do (echo y | "C: \ Program Files \ PuTTY \ pscp.exe" -l root -i "C: \ Chương trình tập tin \ PuTTY \ SSH .ppk "-touch %% A: / tmp / test)
:KỊCH BẢN
for / F "tokens = 1" %% A trong (% IPFILE%) do ("C: \ Chương trình tập tin \ PuTTY \ putty.exe" -ssh %% A -t -l root -i "C: \ Tệp chương trình \ PuTTY \ SSH.ppk "-m" C: \ Tệp chương trình \ PuTTY \ scripts \% SCRIPT% ")
nếu tồn tại nmap_temp.txt (del nmap_temp.txt)
nếu tồn tại nmap_temp2.txt (del nmap_temp2.txt)
set / p runagain = "Nhấn Enter để kết thúc hoặc y để chạy lại"
nếu% runagain% == y TÙY CHỌN GOTO
-m
chuyển đổi với Plink, vì nó cho phép chỉ định lệnh trực tiếp trên dòng lệnh của nó, xem câu trả lời của tôi .