Sadece umarım bazı insanlara saatlerce söz dizimi ve adam sayfası araştırması kaydetmek için yaptığım senaryoyu ekleyeceğimi düşündüm
a) SingleIP, IP Aralığı veya IPList dosyası
b) IP / aralıkta çalıştırılacak komut dosyası adı (gerçek unix sh / ksh türü komut dosyası)
c) isteğe bağlı olarak bağlantı noktası 22 için nmap taraması yapın (örneğin, bazı Linux olmayan makinelerde alt ağ)
-IPs macunun bağlanamamasını önlemek, betiğin düzgün bir şekilde devam etmesini önlemek
d) isteğe bağlı olarak ana makine anahtarını otomatik olarak önbelleğe almak için pscp komutunu çalıştırın (macun bunu otomatik olarak yapmaz)
Bu parti şunları varsaymaktadır:
1. tam PuTTY paketi ve SSH anahtarı yüklü C: \ Program Files \ PuTTY \
2. C / \ Program Files \ PuTTY \ scripts \ dizinine yüklenen toplu iş / komut dosyaları / IPlist dosyaları
3. NMAP ve PuTTY çalışma dizinleri komut yolunuzda
https://www.harmonyhit.com/PuttyBatch.bat
Bu genellikle bir dizi makinede tek bir komut dosyasının (SSL sertifikasının güncellenmesi gibi) olması için kullanışlıdır
İşte tam toplu iş dosyası:
@EKO KAPALI
rem SSH anahtar konumunuzu yansıtacak şekilde CACHEKEY ve SCRIPT bölümünü değiştirmeniz gerekir
set IPFILE = IPList_temp.txt
kaçış ayarla = n
SEÇENEK ayarla = 1
RANGE = ayarlayın
IP ayarla =
SCAN = n olarak ayarla
KEYCACHE = n olarak ayarla
: SEÇENEĞİ
CLS
ECHO (Çalışma dizini C: \ Program Files \ PuTTY \ scripts \ olarak ayarlandı)
EKO.
ECHO 1. Tek IP
ECHO 2. IP liste dosyası
ECHO 3. IP Aralığı
EKO.
set / p OPTION = "IP türünü seçin:"
% OPTION% == 3 GOTO IPRANGE EĞER
% OPTION% == 2 GOTO IPLIST EĞER
EĞER% OPTION% == 1 GOTO SINGLEIP
echo Lütfen geçerli bir seçenek seçin
GOTO SEÇENEKLERİ
:IP ARALIĞI
ECHO Aşağıdaki aralıktaki gibi IP aralıklarını girin. Birden çok aralık arasında boşluk kullanın:
ECHO yani "10.21.0.15-99 10.21.1.15-100"
set / p RANGE = Aralık Girin:
echo% RANGE%>% IPFILE%
GOTO SCRIPTNAME
: SINGLEIP
set / p IP = IP Gir:
echo% IP%>% IPFILE%
GOTO SCRIPTNAME
: IPLIST
set / p IP = IPList dosya adını girin:
kopya / Y% IP%% IPFILE%
GOTO SCRIPTNAME
: komut dosyasının
set / p SCRIPT = Komut dosyası adını girin:
yoksa% SCRIPT% (
yankı dosya adı mevcut değil!
GOTO SCRIPTNAME)
EKO.
set / p SCAN = Önce Nmap taraması yapıyor mu? (önerilen):
eğer% SCAN% == n GOTO: RUNCACHE
rem IP türünün "aralık" olup olmadığını kontrol edin, çünkü nmap dosyadan bir IP aralığı okuyamaz ve doğrudan nmap komutunda yazılmalıdır
% OPTION% == 3 GOTO NMAPRANGE EĞER
: NMAP
echo Bağlantı noktası 22 için IP tarama açık ...
nmap --open -n -p22 -iL% IPFILE% -oG - | findstr / E Yukarı> nmap_temp.txt
GOTO AFTERNMAP
: NMAPRANGE
echo Bağlantı noktası 22 için IP tarama açık ...
nmap --open -n -p22% ARALIK% -oG - | findstr / E Yukarı> nmap_temp.txt
: AFTERNMAP
echo YAPILDI
rem nmap biçimlendirmesi doğru değil, aşağıdaki ek bilgileri kaldırır
(nmap_temp.txt) içindeki / f "belirteçleri = 2" %% A için %% A >> nmap_temp2.txt yazın
rem IP'nin sonundaki gizli alanı kaldır (toplu iş dizininde "repl" olmasını gerektirir)
"nmap_temp2.txt" yazın | yanıt "" "">% IPFILE%
: RUNCACHE
set / p KEYCACHE = SSH anahtarını tara ve önbelleğe al (y / n)?
% KEYCACHE% == n GOTO SCRIPT ise
: CACHEKEY
rem Önceden önbelleğe alınmamışsa SSH Ana Bilgisayar Anahtarını önbelleğe almak için tüm IP'leri çalıştırın
/ F "tokens = *" (% IPFILE%) içindeki %% A için (echo y | "C: \ Program Files \ PuTTY \ pscp.exe" -l root -i "C: \ Program Files \ PuTTY \ SSH .ppk "-touch %% A: / tmp / test)
:SENARYO
/% "tokens = 1" (% IPFILE%) içindeki %% A için ("C: \ Program Files \ PuTTY \ putty.exe" -ssh %% A -t -l root -i "C: \ Program Dosyaları \ PuTTY \ SSH.ppk "-m" C: \ Program Dosyaları \ PuTTY \ scripts \% SCRIPT% ")
varsa nmap_temp.txt (del nmap_temp.txt)
varsa nmap_temp2.txt (del nmap_temp2.txt)
set / p runagain = "Bitirmek için Enter tuşuna, tekrar çalıştırmak için y tuşuna basın"
% runagain% == y GOTO SEÇENEĞİ
-m
Komutu doğrudan komut satırında belirtmesine izin verdiği için Plink ile anahtarı kullanmanıza gerek yok , cevabımı görün .