Bejegyzés automatizálása a SecureCRT-ben szkriptek segítségével
A hálózati mérnökök gyakran szembesülnek azzal a feladattal, hogy bizonyos töredékeket másoljanak/beillesztsenek egy jegyzettömbről a konzolra. Általában több paramétert kell másolni: Felhasználónév/Jelszó és valami más. A szkriptek használata lehetővé teszi ennek a folyamatnak a felgyorsítását. DE a szkript megírásának és a szkript végrehajtásának összességében kevesebb időt kell igénybe vennie, mint a kézi konfigurálásnál, különben a szkriptek használhatatlanok.
Mire való ez a cikk? Ez a cikk a Fast Start sorozatból származik, és célja, hogy időt takarítson meg a hálózati mérnökök számára, amikor a berendezéseket (egyetlen feladat) több eszközön állítják be. SecureCRT szoftvert és beépített szkript-végrehajtási funkciót használ. Tartalom
A SecureCRT program beépített parancsfájl-végrehajtási mechanizmussal rendelkezik. Mire valók a terminál szkriptek?
Automatikus I/O és minimális I/O érvényesítés.
Gyorsítsa fel a rutinfeladatok végrehajtását – csökkentse a szüneteket a berendezés beállításai között. (De facto csökkenti az ugyanazon a hardveren végzett másolási/múltbeli műveletek végrehajtási ideje által okozott szüneteket, 3 vagy több parancsrészlettel a hardverre.)
Ez a dokumentum a következő feladatokat tartalmazza:
Egyszerű szkriptek készítése.
Szkriptek futtatása SecureCRT-n.
Példák egyszerű és fejlett szkriptek használatára. (Gyakorlat a való életből.)
Egyszerű szkriptek készítése.
A legegyszerűbb szkriptek csak két parancsot használnak, a Send és a WaitForString parancsot. Ez a funkció az elvégzett feladatok 90%-ára (vagy többre) elegendő.
A szkriptek működhetnek Python, JS, VBS (Visual Basic), Perl stb.
# $language = "VBScript"
# $interface = "1.0"
Sub Main
crt.Screen.Synchronous = True
crt.Screen.Send vbcr
crt.Screen.WaitForString "name"
crt.Screen.Send "cisco" & vbcr
crt.Screen.WaitForString "assword"
crt.Screen.Send "cisco" & vbcr
crt.Screen.Synchronous = False
End Sub
Általában "*.vbs" kiterjesztésű fájl
Hozzon létre egy szkriptet egy szkriptbejegyzés segítségével.
Lehetővé teszi a szkript írási folyamatának automatizálását. Elkezdesz írni egy forgatókönyvet. A SecureCRT rögzíti a parancsokat és az azt követő hardveres választ, és megjeleníti a kész szkriptet.
A. Kezdje el írni a forgatókönyvet:
SecureCRT Menu => Script => Start Recording Script
b. Hajtsa végre a műveleteket a konzollal (végezze el a konfigurációs lépéseket a CLI-ben).
V. Fejezd be a forgatókönyv megírását:
SecureCRT menü => Szkript => Szkript rögzítésének leállítása…
Mentse el a script fájlt.
Példa végrehajtott parancsokra és mentett szkriptekre:
Szkriptek futtatása SecureCRT-n.
A script létrehozása/szerkesztése után logikus kérdés merül fel: Hogyan kell alkalmazni a szkriptet?
Számos módja van:
Manuális futtatás a Script menüből
Automatikus indítás csatlakozás után (bejelentkezési szkript)
Automatikus bejelentkezés script használata nélkül
Manuális indítás egy gombbal a SecureCRT-ben (egy gombot még létre kell hozni és hozzá kell adni a SecureCRT-hez)
Automatikus indítás csatlakozás után (bejelentkezési szkript)
Az automatikus naplózási szkript beállításai a mentett munkamenethez vannak konfigurálva: Kapcsolat => Bejelentkezési műveletek => Bejelentkezési szkript
Automatikus bejelentkezés script használata nélkül
Lehetőség van a jelszó felhasználónevének automatikus bevitelére script írása nélkül, csak a SecureCRT beépített funkcióival. A csatlakozási beállításoknál „Kapcsolat” => Bejelentkezési műveletek => Bejelentkezés automatizálása - több köteget kell kitöltenie -, ami a következő párokat jelenti: „Várható szöveg” + „Ebbe a szövegbe küldött karakterek” sok ilyen pár lehet. (Példa: az 1. pár a felhasználónévre, a második a jelszóra, a harmadik a privilegizált módra, a negyedik pár a privilegizált mód jelszavára.)
Példa az automatikus bejelentkezésre a Cisco ASA rendszeren:
Manuális indítás egy gombbal a SecureCRT-ben (egy gombot még létre kell hozni és hozzá kell adni a SecureCRT-hez)
A SecureCRT-ben parancsfájlt rendelhet egy gombhoz. A gomb egy speciálisan erre a célra létrehozott panelhez kerül hozzáadásra.
A. Panel hozzáadása a felülethez: SecureCRT Menu => View => Button Bar
b. Adjon hozzá egy gombot a panelhez, és adjon hozzá egy szkriptet. – Kattintson a jobb gombbal a gombsorra, és válassza ki az „Új gomb…” elemet a helyi menüből.
V. A "Térkép gomb" párbeszédpanel "Művelet" mezőjében válassza ki a "Szkript futtatása" műveletet (függvényt).
Adjon meg egy feliratot a gombhoz. A gomb ikonjának színe. Fejezze be a beállításokat az OK gombra kattintva.
Megjegyzés:
A gombokkal ellátott panel nagyon hasznos funkció.
1. Egy adott munkamenetbe történő bejelentkezéskor megadható, hogy alapértelmezés szerint melyik panelt kell megnyitni erre a lapra.
2. Lehetőség van előre definiált műveletek beállítására a szabványos műveletekhez a berendezéssel: verzió megjelenítése, futtatás-konfig megjelenítése, konfiguráció mentése.
Ezekhez a gombokhoz nincs szkript csatolva. Csak akcióvonal:
Beállítás - hogy amikor egy munkamenetre váltunk, a munkamenet beállításaiban megnyílik a szükséges gombokkal ellátott panel:
Célszerű, ha az ügyfél egyedi szkripteket állít be a bejelentkezéshez, és a szállító gyakori parancsait tartalmazó panelre lép.
Ha megnyomja a Go Cisco gombot, a panel a Cisco gombsorra vált.
Példák egyszerű és fejlett szkriptek használatára. (Gyakorlat a való életből.)
Az egyszerű szkriptek szinte minden alkalomra elegendőek. De egyszer egy kicsit bonyolítanom kellett a forgatókönyvet - hogy felgyorsítsam a munkát. Ez a komplikáció csak további adatokat kért a felhasználótól egy párbeszédpanelen.
Adatkérés a felhasználótól párbeszédpanel segítségével
Az adatkérő szkriptben 2 volt. Ez a gazdagépnév és az IP-cím 4. oktettje. Ennek a műveletnek a végrehajtásához - rákerestem a google-ban, hogyan kell csinálni, és megtaláltam a SecureCRT (vandyke) hivatalos honlapján. - a funkciót promptnak nevezik.
A szkriptnek ez a része a gazdagép nevét és az utolsó oktett számait kérte. Mivel 15 db berendezés volt. És az adatokat táblázatban mutatták be, majd kimásoltam az értékeket a táblázatból, és beillesztem a párbeszédpanelekbe. Továbbá a forgatókönyv önállóan működött.
FTP másolás hálózati berendezésre.
Ez a szkript elindította a parancsablakot (shell), és FTP-n keresztül másolta az adatokat. A végén zárja be a munkamenetet. Ehhez nem lehet jegyzettömböt használni, mert a másolás nagyon sokáig tart, és az FTP pufferben lévő adatok nem tárolódnak ennyi ideig:
# $language = "Python"
# $interface = "1.0"
# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.
def main():
crt.Screen.Synchronous = True
crt.Screen.Send("ftp 192.168.1.1r")
crt.Screen.WaitForString("Name")
crt.Screen.Send("adminr")
crt.Screen.WaitForString("Password:")
crt.Screen.Send("Passwordr")
crt.Screen.WaitForString("ftp")
crt.Screen.Send("binaryr")
crt.Screen.WaitForString("ftp")
crt.Screen.Send("put S5720LI-V200R011SPH016.patr")
crt.Screen.WaitForString("ftp")
crt.Screen.Send("quitr")
crt.Screen.Synchronous = False
main()
Felhasználónév/jelszó bevitele szkript segítségével
Egy ügyfélnél a hálózati berendezésekhez való közvetlen hozzáférést lezárták. A berendezésbe úgy lehetett belépni, hogy először a Default Gateway-hez, majd onnan a hozzá csatlakoztatott berendezéshez csatlakoztunk. A csatlakozáshoz az IOS/hardver szoftverbe épített ssh klienst használtuk. Ennek megfelelően a konzolban kérték a felhasználónevet és a jelszót. Az alábbi szkripttel a felhasználónév és a jelszó automatikusan beírásra került:
# $language = "Python"
# $interface = "1.0"
# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.
def main():
crt.Screen.Synchronous = True
crt.Screen.Send("snmpadminr")
crt.Screen.WaitForString("assword:")
crt.Screen.Send("Passwordr")
crt.Screen.Synchronous = False
main()
Megjegyzés: 2 szkript volt: az egyik a rendszergazdai fiókhoz, a második az eSIGHT fiókhoz.
Szkript, amely képes közvetlenül hozzáfűzni adatokat a szkript végrehajtása során.
A feladat egy statikus útvonal hozzáadása volt az összes hálózati berendezésen. De az internet átjárója minden berendezésen más volt (és különbözött az alapértelmezett átjárótól). A következő szkript megjelenítette az útválasztási táblát, belépett a konfigurációs módba, nem írta ki a parancsot a végére (az Internet átjáró IP-címe) - ezt a részt hozzáadtam. Miután megnyomtam az Entert, a szkript folytatta a parancs végrehajtását.
# $language = "Python"
# $interface = "1.0"
# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.
def main():
crt.Screen.Synchronous = True
crt.Screen.Send("Zdes-mogla-bit-vasha-reklamar")
crt.Screen.WaitForString("#")
crt.Screen.Send("show run | inc ip router")
crt.Screen.WaitForString("#")
crt.Screen.Send("conf tr")
crt.Screen.WaitForString("(config)#")
crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ")
crt.Screen.WaitForString("(config)#")
crt.Screen.Send("endr")
crt.Screen.WaitForString("#")
crt.Screen.Send("copy run star")
crt.Screen.WaitForString("[startup-config]?")
crt.Screen.Send("r")
crt.Screen.WaitForString("#")
crt.Screen.Send("exitr")
crt.Screen.Synchronous = False
main()
Ebben a szkriptben a következő sorban: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ") az átjáró IP-címe nincs hozzáadva, és nincs kocsi visszatérési karakter. A szkript a következő sorra vár a "(config) #" karakterekkel Ezek a karakterek az ip cím beírása és beírása után jelentek meg.
következtetés:
A szkript írásakor és végrehajtásakor be kell tartani a szabályt: A szkript írásához és végrehajtásához szükséges idő soha nem lehet több, mint az elméletileg ugyanazon munka manuális elvégzésére fordított idő (jegyzettömbről másolás / beillesztés, írás és hibakeresés). egy játékkönyv az ansible, python szkript írásához és hibakereséséhez). Vagyis a szkript használatával időt kell megtakarítani, és nem szabad időt pazarolni a folyamatok egyszeri automatizálására (vagyis amikor a szkript egyedi, és nem lesz többé ismétlés). De ha a szkript egyedi, és a szkripttel végzett automatizálás és a szkript írása/hibakeresése kevesebb időt vesz igénybe, mint bármilyen más módon (lehető, parancsablak), akkor a szkript a legjobb megoldás.
Szkript hibakeresése. A szkript fokozatosan növekszik, a hibakeresés az első, második, harmadik eszköz bejáratásán történik, a negyedikre pedig nagy valószínűséggel a szkript már teljesen működőképes lesz.
A szkript futtatása (felhasználónév+jelszó megadásával) az egérrel általában gyorsabb, mint a felhasználónév és a jelszó másolása a jegyzettömbről. De biztonsági szempontból nem biztonságos.
Egy másik (valódi) példa szkript használatára: Nincs közvetlen hozzáférése a hálózati berendezésekhez. De szükség van az összes hálózati berendezés konfigurálására (hozza be a megfigyelő rendszerbe, konfiguráljon további felhasználónevet/jelszót/snmpv3felhasználónevet/jelszót). Akkor van hozzáférés, ha a Core switch-re lépsz, onnan nyitod meg az SSH-t más berendezésekre. Miért nem használhatod az Ansible-t? - Mert a hálózati eszközökön (vty 0 4 vonal, felhasználói felület vty 0 4) korlátozzuk a megengedett egyidejű munkamenetek számát (más kérdés, hogy hogyan lehet különböző berendezéseket elindítani az Ansible-ben ugyanazzal az SSH első ugrással).
A szkript csökkenti az időt a hosszú műveletek során – például a fájlok FTP-n keresztüli másolásakor. A másolás befejezése után a szkript azonnal működésbe lép. A személynek látnia kell a másolás végét, majd meg kell értenie a másolás végét, majd be kell írnia a megfelelő parancsokat. A forgatókönyv objektíven gyorsabban csinálja.
A szkriptek ott alkalmazhatók, ahol nem lehet tömeges adattovábbítási eszközöket használni: Konzol. Vagy ha a berendezés egyes adatai egyediek: gazdagépnév, kezelési IP-cím. Vagy egy program írása és hibakeresése nehezebb, mint a szkript futása közben a berendezéstől kapott adatok hozzáadása. - Példa egy útvonal előírására szolgáló szkripttel, amikor minden berendezésnek saját IP-címe van az internetszolgáltatótól. (A kollégáim ilyen szkripteket írtak - amikor a DMVPN beszéde 3 felett volt. Módosítani kellett a DMVPN beállításait).
Esettanulmány: Kezdeti beállítások konfigurálása egy új kapcsolón a konzolportok segítségével:
V. Csatlakoztassa a konzol kábelét az eszközhöz.
B. Futtassa a szkriptet
B. Megvárta a forgatókönyv végrehajtását
D. Csatlakoztassa a konzol kábelét a következő eszközhöz.
E. Ha a kapcsoló nem az utolsó, folytassa a B lépéssel.
A forgatókönyv munkájának eredményeként:
a kezdeti jelszó be van állítva a berendezésen.
Felhasználónév megadva
az eszköz egyedi IP-címe kerül megadásra.
PS a műveletet meg kellett ismételni. Mivel az alapértelmezett ssh nincs beállítva/letiltva. (Igen, ez az én hibám.)
Példa egy hosszú szkriptre, két lekérdezéssel: Gazdanév és IP-cím. A berendezések konzolon keresztüli előbeállítására készült (9600 baud). És a berendezések hálózathoz való csatlakoztatásának előkészítése is.
Ilyen szkriptekre általában nincs szükség, de a felszerelés mennyisége 15 db. Megengedett gyorsabb beállítás. A SecureCRT Command ablak segítségével gyorsabb volt a berendezés beállítása.
Fiók beállítása ssh-hez.
Egy másik példa. A konfiguráció szintén a konzolon keresztül történik.
# $language = "Python"
# $interface = "1.0"
# Connect to a telnet server and automate the initial login sequence.
# Note that synchronous mode is enabled to prevent server output from
# potentially being missed.
def main():
crt.Screen.Synchronous = True
crt.Screen.Send("r")
crt.Screen.WaitForString("name")
crt.Screen.Send("adminr")
crt.Screen.WaitForString("Password:")
crt.Screen.Send("Passwordr")
crt.Screen.WaitForString(">")
crt.Screen.Send("sysr")
crt.Screen.Send("stelnet server enabler")
crt.Screen.Send("aaar")
crt.Screen.Send("local-user admin service-type terminal ftp http sshr")
crt.Screen.Send("quitr")
crt.Screen.Send("user-interface vty 0 4r")
crt.Screen.Send("authentication-mode aaar")
crt.Screen.Send("quitr")
crt.Screen.Send("quitr")
crt.Screen.Synchronous = False
main()
A SecureCRT-ről:Fizetett szoftver: 99 dollártól (a legalacsonyabb ár csak a SecureCRT-re vonatkozik egy évre) Hivatalos oldal
Egy szoftverlicenc egyszer vásárolható meg támogatással (frissítéshez), majd a szoftver ezzel a licenccel korlátlan ideig használható.
Működik Mac OS X és Windows operációs rendszereken.
Van szkript támogatás (ez a cikk)
Van Parancsablak
Soros/Telnet/SSH1/SSH2/Shell operációs rendszer