แค่คิดว่าฉันจะใส่สคริปต์ที่ฉันทำเพื่อหวังว่าจะได้ประหยัดเวลาบางคนที่จะใช้ไวยากรณ์และการวิจัยหน้ามนุษย์
a) ไฟล์ SingleIP, IP Range หรือ IPList
b) ชื่อสคริปต์เพื่อทำงานบน IP / range (สคริปต์ unix sh / ksh type จริง)
c) เลือกสแกน nmap สำหรับพอร์ต 22 ที่เปิดอยู่ (เช่น subnet กับเครื่องที่ไม่ใช่ Linux)
- ต้องการหลีกเลี่ยงการใช้สีโป๊ว IPs ไม่สามารถเชื่อมต่อได้หลีกเลี่ยงสคริปต์ที่จะสามารถดำเนินการต่อได้อย่างถูกต้อง
d) เลือกรันคำสั่ง pscp เพื่อทำการ autocache คีย์โฮสต์ (putty ไม่ทำสิ่งนี้โดยอัตโนมัติ)
ชุดนี้จะถือว่า:
1. คุณมีแพคเกจ PuTTY เต็มรูปแบบและคีย์ SSH ติดตั้งใน C: \ Program Files \ PuTTY \
2. ไฟล์แบทช์ / สคริปต์ / IPlist ที่ติดตั้งใน C: \ Program Files \ PuTTY \ scripts \
3. ไดเร็กทอรีการทำงานของ NMAP และ PuTTY อยู่ในพา ธ คำสั่งของคุณ
https://www.harmonyhit.com/PuttyBatch.bat
สิ่งนี้มีประโยชน์เป็นส่วนใหญ่สำหรับการมีสคริปต์เดียว (เช่นการอัปเดตใบรับรอง SSL) ในเครื่องต่างๆ
นี่คือไฟล์แบตช์ที่สมบูรณ์:
@ECHO OFF
rem คุณต้องแก้ไขส่วน CACHEKEY และ SCRIPT เพื่อแสดงตำแหน่งคีย์ SSH ของคุณ
ตั้ง IPFILE = IPList_temp.txt
ตั้ง runagain = 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:"
IF% OPTION% == 3 GOTO IPRANGE
IF% OPTION% == 2 GOTO IPLIST
IF% OPTION% == 1 GOTO SINGLEIP
echo โปรดเลือกตัวเลือกที่ถูกต้อง
ตัวเลือก GOTO
: 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
: สคริปต์
set / p SCRIPT = ป้อนชื่อสคริปต์:
หากไม่มีอยู่% SCRIPT% (
ชื่อไฟล์ echo ไม่มีอยู่!
GOTO SCRIPTNAME)
ECHO
set / p SCAN = สแกน Nmap ก่อนหรือไม่? (แนะนำ):
ถ้า% SCAN% == n GOTO: RUNCACHE
ตรวจสอบว่าประเภท IP เป็น "ช่วง" เนื่องจาก nmap ไม่สามารถอ่านช่วง IP จากไฟล์และต้องพิมพ์โดยตรงในคำสั่ง nmap
IF% OPTION% == 3 GOTO NMAPRANGE
: NMAP
echo Scanning IPs สำหรับพอร์ต 22 ที่เปิด ...
nmap - เปิด -n -p22 -iL% IPFILE% -oG - | findstr / E Up> nmap_temp.txt
GOTO AFTERNMAP
: NMAPRANGE
echo Scanning IPs สำหรับพอร์ต 22 ที่เปิด ...
nmap - เปิด -n -p22% RANGE% -oG - | findstr / E Up> nmap_temp.txt
: AFTERNMAP
ทำเสียงสะท้อน
การจัดรูปแบบ 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 (y / n) หรือไม่
ถ้า% KEYCACHE% == n GOTO SCRIPT
: cacheKey
rem เรียกใช้ IP ทั้งหมดเพื่อแคชคีย์โฮสต์ SSH หากยังไม่ได้แคช
สำหรับ / 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 "tokens = 1" %% A ใน (% IPFILE%) ทำ ("C: \ Program Files \ PuTTY \ putty.exe" -ssh %% A -t -l root -i "C: \ Program Files \ PuTTY \ SSH.ppk "-m" C: \ Program Files \ PuTTY \ สคริปต์ \% SCRIPT% ")
หากมีอยู่ nmap_temp.txt (del nmap_temp.txt)
หากมีอยู่ nmap_temp2.txt (del nmap_temp2.txt)
set / p runagain = "กด Enter เพื่อเสร็จสิ้นหรือ y เพื่อรันใหม่"
ถ้า% runagain% == y ตัวเลือก GOTO
-m
สวิทช์ที่มี Plink ขณะที่มันช่วยให้การระบุคำสั่งโดยตรงบนบรรทัดคำสั่งให้ดูคำตอบของฉัน