ProHoster > Blog > uprava > Automatiziranje unosa u SecureCRT pomoću skripti
Automatiziranje unosa u SecureCRT pomoću skripti
Mrežni inženjeri često se suočavaju sa zadatkom kopiranja/lijepljenja određenih fragmenata iz bilježnice u konzolu. Obično morate kopirati nekoliko parametara: korisničko ime/lozinka i još nešto. Korištenje skripti omogućuje vam ubrzanje ovog procesa. ALI zadaci pisanja skripte i izvršavanja skripte trebali bi ukupno trajati manje od ručne konfiguracije, inače su skripte beskorisne.
Čemu služi ovaj članak? Ovaj je članak iz serije Fast Start i usmjeren je na uštedu vremena mrežnim inženjerima prilikom postavljanja opreme (jedan zadatak) na više uređaja. Koristi SecureCRT softver i ugrađenu funkciju izvršavanja skripte. sadržaj
Program SecureCRT ima ugrađeni mehanizam za izvršavanje skripte odmah po otvaranju. Čemu služe terminalske skripte?
Automatizirani I/O i minimalna I/O provjera valjanosti.
Ubrzajte izvršavanje rutinskih zadataka - smanjite pauze između postavki opreme. (De facto smanjenje pauza uzrokovanih vremenom za izvođenje radnji kopiranja/prošlosti na istom hardveru, s 3 ili više fragmenata naredbi koji se primjenjuju na hardver.)
Ovaj dokument pokriva zadatke:
Izrada jednostavnih skripti.
Pokretanje skripti na SecureCRT.
Primjeri korištenja jednostavnih i naprednih skripti. (Vježba iz stvarnog života.)
Izrada jednostavnih skripti.
Najjednostavnije skripte koriste samo dvije naredbe, Send i WaitForString. Ova funkcionalnost dovoljna je za 90% (ili više) obavljenih zadataka.
Skripte mogu raditi u Python, JS, VBS (Visual Basic), Perl, itd.
# $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
Obično datoteka s ekstenzijom "*.vbs"
Stvorite skriptu koristeći unos skripte.
Omogućuje automatizaciju procesa pisanja skripte. Počinjete pisati scenarij. SecureCRT bilježi naredbe i kasniji hardverski odgovor te vam prikazuje gotovu skriptu.
A. Počnite pisati skriptu:
Izbornik SecureCRT => Skripta => Pokreni snimanje skripte
b. Izvršite radnje s konzolom (izvedite konfiguracijske korake u CLI-ju).
V. Završite pisanje skripte:
Izbornik SecureCRT => Skripta => Zaustavi snimanje skripte…
Spremite datoteku skripte.
Primjer izvršenih naredbi i spremljene skripte:
Pokretanje skripti na SecureCRT.
Nakon izrade/uređivanja skripte postavlja se logično pitanje: Kako primijeniti skriptu?
Postoji nekoliko načina:
Ručno pokretanje iz izbornika Skripta
Automatsko pokretanje nakon spajanja (skripta za prijavu)
Automatska prijava bez korištenja skripte
Ručno pokretanje pomoću gumba u SecureCRT-u (gumb tek treba biti kreiran i dodan u SecureCRT)
Automatsko pokretanje nakon spajanja (skripta za prijavu)
Postavke skripte za automatsko bilježenje konfigurirane su za spremljenu sesiju: Veza => Radnje prijave => Skripta za prijavu
Automatska prijava bez korištenja skripte
Moguće je automatski unijeti korisničko ime lozinke bez pisanja skripte, koristeći samo ugrađenu funkcionalnost SecureCRT-a. U postavkama veze “Spajanje” => Radnje prijave => Automatska prijava - potrebno je ispuniti nekoliko paketa - što znači parove: “Očekivani tekst” + “Poslani znakovi u ovaj tekst” može biti mnogo takvih parova. (Primjer: 1. par čeka korisničko ime, drugi čeka lozinku, treći čeka upit za povlašteni način rada, četvrti par za lozinku povlaštenog načina rada.)
Primjer automatske prijave na Cisco ASA:
Ručno pokretanje pomoću gumba u SecureCRT-u (gumb tek treba biti kreiran i dodan u SecureCRT)
U SecureCRT-u možete dodijeliti skriptu gumbu. Gumb se dodaje na ploču posebno stvorenu za tu svrhu.
A. Dodavanje panela u sučelje: SecureCRT Menu => View => Button Bar
b. Dodajte gumb na ploču i dodajte skriptu. – Kliknite desnom tipkom miša na traku s gumbima i odaberite "Novi gumb..." iz kontekstnog izbornika.
V. U dijaloškom okviru "Map Button", u polju "Action", odaberite radnju (funkciju) "Run Script".
Odredite naslov za gumb. Boja ikone gumba. Završite postavke klikom na OK.
Napomena:
Ploča s gumbima je vrlo korisna funkcija.
1. Moguće je, kada se prijavite u određenu sesiju, odrediti koju ploču otvoriti za ovu karticu prema zadanim postavkama.
2. Moguće je postaviti unaprijed definirane akcije za standardne akcije s opremom: prikaži prikaži verziju, prikaži run-config, spremi konfiguraciju.
Ovim gumbima nije priložena skripta. Samo akcijska linija:
Postavka - tako da se pri prelasku na sesiju u postavkama sesije otvara potrebna ploča s gumbima:
Ima smisla da kupac postavi pojedinačne skripte za prijavu i ode na ploču s čestim naredbama za dobavljača.
Kada pritisnete gumb Go Cisco, ploča se prebacuje na traku s gumbima Cisco.
Primjeri korištenja jednostavnih i naprednih skripti. (Vježba iz stvarnog života.)
Jednostavne skripte dovoljne su za gotovo sve prilike. Ali jednom sam trebao malo zakomplicirati scenarij - ubrzati rad. Ova komplikacija jednostavno je tražila dodatne podatke u dijaloškom okviru od korisnika.
Traženje podataka od korisnika pomoću dijaloškog okvira
U skripti zahtjeva za podacima imao sam 2. Ovo je ime glavnog računala i 4. oktet IP adrese. Za izvođenje ove radnje - guglao sam kako se to radi i našao sam na službenoj web stranici SecureCRT (vandyke). - funkcionalnost se zove prompt.
Ovaj dio skripte je tražio ime glavnog računala i brojeve iz posljednjeg okteta. Pošto je bilo 15 komada opreme. I podaci su predstavljeni u tablici, a zatim sam kopirao vrijednosti iz tablice i zalijepio ih u dijaloške okvire. Dalje je scenarij radio samostalno.
FTP kopiranje na mrežnu opremu.
Ova skripta pokrenula je moj naredbeni prozor (ljusku) i kopirala podatke putem FTP-a. Na kraju zatvorite sesiju. Nemoguće je koristiti notepad za ovo, jer kopiranje traje jako dugo, a podaci u FTP međuspremniku neće biti tako dugo pohranjeni:
# $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()
Unos korisničkog imena/lozinke pomoću skripte
Jednom korisniku zatvoren je izravan pristup mrežnoj opremi. U opremu je bilo moguće ući tako da se prvo spojite na Default Gateway, a s njega zatim na opremu spojenu na njega. Za povezivanje je korišten ssh klijent ugrađen u IOS/hardverski softver. Sukladno tome, korisničko ime i lozinka su zatraženi u konzoli. Sa skriptom u nastavku, korisničko ime i lozinka su automatski uneseni:
# $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()
Napomena: Postojale su 2 skripte. Jedna za administratorski račun, druga za eSIGHT račun.
Skripta s mogućnošću izravnog dodavanja podataka tijekom izvođenja skripte.
Zadatak je bio dodati statičnu rutu na svu mrežnu opremu. Ali pristupnik Internetu na svakoj opremi bio je drugačiji (i razlikovao se od zadanog pristupnika). Sljedeća skripta je prikazala tablicu usmjeravanja, ušla u način konfiguracije, nije napisala naredbu do kraja (IP adresa pristupnika Internetu) - dodao sam ovaj dio. Nakon što sam pritisnuo Enter, skripta je nastavila izvršavati naredbu.
# $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()
U ovoj skripti, u retku: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252 ") IP adresa pristupnika nije dodana i nema znaka za povratak na početak. Skripta čeka sljedeći redak sa znakovima "(config) #" Ovi znakovi su se pojavili nakon što sam upisao ip adresu i enter.
Zaključak:
Prilikom pisanja skripte i njenog izvršavanja mora se poštovati pravilo: Vrijeme za pisanje skripte i izvršavanje skripte nikada ne bi smjelo biti duže od vremena teoretski utrošenog na ručno obavljanje istog posla (kopiraj/zalijepi iz notepada, pisanje i otklanjanje pogrešaka). priručnik za ansible, pisanje i otklanjanje pogrešaka u python skripti). Odnosno, korištenje skripte treba uštedjeti vrijeme, a ne gubiti vrijeme na jednokratnu automatizaciju procesa (tj. kada je skripta jedinstvena i više neće biti ponavljanja). Ali ako je skripta jedinstvena i automatizacija sa skriptom i pisanje/otklanjanje pogrešaka u skripti traje manje vremena nego izvođenje na bilo koji drugi način (ansibl, naredbeni prozor), tada je skripta najbolje rješenje.
Otklanjanje pogrešaka skripte. Skripta postupno raste, otklanjanje pogrešaka se odvija na uhodavanju na prvom, drugom, trećem uređaju, a do četvrtog će skripta najvjerojatnije biti potpuno operativna.
Pokretanje skripte (unošenjem korisničkog imena+lozinke) pomoću miša obično je brže od kopiranja korisničkog imena i lozinke iz bilježnice. Ali nije siguran sa sigurnosne točke gledišta.
Drugi (pravi) primjer kada koristite skriptu: Nemate izravan pristup mrežnoj opremi. No potrebno je konfigurirati svu mrežnu opremu (uvesti je u sustav nadzora, konfigurirati dodatno korisničko ime/lozinku/snmpv3korisničko ime/lozinku). Postoji pristup kada odete na Core switch, s njega otvarate SSH prema drugoj opremi. Zašto ne možete koristiti Ansible. - Zato što nailazimo na ograničenje broja dopuštenih simultanih sesija na mrežnoj opremi (linija vty 0 4, korisničko sučelje vty 0 4) (drugo je pitanje kako pokrenuti drugu opremu u Ansibleu s istim SSH prvim skokom).
Skripta smanjuje vrijeme tijekom dugih operacija - na primjer, kopiranje datoteka putem FTP-a. Nakon završetka kopiranja, skripta odmah počinje raditi. Osoba će morati vidjeti kraj kopiranja, zatim shvatiti kraj kopiranja, zatim unijeti odgovarajuće naredbe. Scenarij to čini objektivno brže.
Skripte su primjenjive tamo gdje je nemoguće koristiti alate za dostavu masovnih podataka: Konzola. Ili kada su neki od podataka za opremu jedinstveni: ime hosta, IP adresa upravljanja. Ili kada pišete program i ispravljate pogreške, to je teže od dodavanja podataka primljenih od opreme dok skripta radi. - Primjer sa skriptom za propisivanje rute, kada svaka oprema ima svoju IP adresu Internet providera. (Moji kolege su napisali takve skripte - kada je DMVPN govorio bilo je preko 3. Bilo je potrebno promijeniti postavke DMVPN-a).
Studija slučaja: Konfiguriranje početnih postavki na novom prekidaču pomoću portova konzole:
A. Uključili ste kabel konzole u uređaj.
B. Pokrenite skriptu
B. Čekao je izvršenje skripte
D. Priključite kabel konzole u sljedeći uređaj.
E. Ako prekidač nije zadnji, idite na korak B.
Kao rezultat rada skripte:
početna lozinka je postavljena na opremi.
Korisničko ime uneseno
upisuje se jedinstvena IP adresa uređaja.
PS operacija se morala ponoviti. Budući da zadani ssh nije konfiguriran/onemogućen. (Da, ovo je moja greška.)
Primjer duge skripte, s dva upita: ime hosta i IP adresa. Napravljen je za predpodešavanje opreme preko konzole (9600 baud). I također pripremiti priključak opreme na mrežu.
Takve skripte obično nisu potrebne, ali količina opreme je 15 kom. Omogućeno brže postavljanje. Bilo je brže postaviti opremu pomoću SecureCRT naredbenog prozora.
Postavljanje računa za ssh.
Još jedan primjer. Konfiguracija je također putem konzole.
# $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()
O SecureCRT-u:Softver koji se plaća: od 99 USD (najmanja cijena je samo za SecureCRT za godinu dana) Službena web stranica
Softverska licenca se kupuje jednom, uz podršku (za ažuriranje), zatim se softver koristi s ovom licencom neograničeno vrijeme.
Radi na operativnim sustavima Mac OS X i Windows.
Postoji podrška za skriptu (ovaj članak)
Tu je naredbeni prozor
Operativni sustav Serial/Telnet/SSH1/SSH2/Shell