Automatisearjen fan yngong yn SecureCRT mei skripts
Netwurkingenieurs steane faak foar de taak om bepaalde fragminten fan in notepad nei de konsole te kopiearjen / te plakjen. Jo moatte meastentiids ferskate parameters kopiearje: Brûkersnamme / Wachtwurd en wat oars. It brûken fan skripts lit jo dit proses fersnelle. MAAR de taken fan it skriuwen fan it skript en it útfieren fan it skript moatte yn totaal minder tiid nimme dan hânmjittich konfiguraasje, oars binne de skripts nutteloos.
Wêr is dit artikel foar? Dit artikel is út 'e Fast Start-searje en is rjochte op it besparjen fan netwurkingenieurs tiid by it ynstellen fan apparatuer (ien taak) op meardere apparaten. Brûkt SecureCRT software en ynboude skript útfiering funksjonaliteit. Ynhâld
It programma SecureCRT hat in ynboude skript-útfiermeganisme út 'e doaze. Wêr binne terminalskripts foar?
Automatisearre I/O, en minimale I/O-validaasje.
Fersnelle de útfiering fan routine taken - ferminderjen fan pauzes tusken apparatuerynstellingen. (De facto reduksje fan pauzes feroarsake troch tiid foar it útfieren fan kopiearje / ferline aksjes op deselde hardware, mei 3 of mear kommando-fragminten dy't moatte wurde tapast op hardware.)
Dit dokumint omfettet de taken:
It meitsjen fan ienfâldige skripts.
Skripten útfiere op SecureCRT.
Foarbylden fan it brûken fan ienfâldige en avansearre skripts. (Oefenje út it echte libben.)
It meitsjen fan ienfâldige skripts.
De ienfâldichste skripts brûke mar twa kommando's, Send en WaitForString. Dizze funksjonaliteit is genôch foar 90% (of mear) fan 'e taken útfierd.
Skripten kinne wurkje yn Python, JS, VBS (Visual Basic), Perl, ensfh.
# $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
Gewoanlik in bestân mei de tafoeging "*.vbs"
Meitsje in skript mei in skriptyngong.
Hjirmei kinne jo it proses fan it skriuwen fan in skript automatisearje. Jo begjinne in skript te skriuwen. SecureCRT registrearret de kommando's en de folgjende hardware-antwurd en toant it ôfmakke skript foar jo.
IN. Begjin skript skriuwen:
SecureCRT Menu => Skript => Skript opnimme
b. Útfiere aksjes mei de konsole (fiere konfiguraasje stappen yn de CLI).
V. Foltôgje it skriuwen fan it skript:
SecureCRT Menu => Skript => Skript opnimme ...
Bewarje it skripttriem.
Foarbyld fan útfierde kommando's en bewarre skript:
Skripten útfiere op SecureCRT.
Nei it meitsjen/bewurkjen fan it skript komt der in logyske fraach op: Hoe kin it skript tapast wurde?
D'r binne ferskate manieren:
Hânmjittich útfiere fanút it Skriptmenu
Automatysk start nei ferbining (oanmeldingsskript)
Automatysk oanmelde sûnder in skript te brûken
Mei de hân triggerje mei in knop yn SecureCRT (in knop moat noch oanmakke wurde en tafoege oan SecureCRT)
Hânmjittich útfiere fanút it Skriptmenu
SecureCRT Menu => Skript => Run…
- De lêste 10 skripts wurde ûnthâlden en beskikber foar rappe lansearring:
SecureCRT menu => Skript => 1 "Skript triemnamme"
SecureCRT menu => Skript => 2 "Skript triemnamme"
SecureCRT menu => Skript => 3 "Skript triemnamme"
SecureCRT menu => Skript => 4 "Skript triemnamme"
SecureCRT menu => Skript => 5 "Skript triemnamme"
Automatysk start nei ferbining (oanmeldingsskript)
Ynstellings foar automatyske oanmeldskript binne konfigureare foar de bewarre sesje: Ferbining => Oanmeldeaksjes => Oanmeldingsskript
Automatysk oanmelde sûnder in skript te brûken
It is mooglik om automatysk de brûkersnamme fan it wachtwurd yn te fieren sûnder in skript te skriuwen, mei allinich de ynboude funksjonaliteit fan SecureCRT. Yn 'e ferbiningynstellingen "Ferbining" => Oanmeldeaksjes => Oanmelde automatisearje - jo moatte ferskate bondels ynfolje - wat betsjutte dat de pearen: "ferwachte tekst" + "Tekens nei dizze tekst ferstjoerd" kinne d'r in protte sokke pearen wêze. (Bygelyks: 1e pear wachtet op brûkersnamme, twadde wachtet op wachtwurd, tredde wachtet op befoarrjochte modus prompt, fjirde pear foar befoarrjochte modus wachtwurd.)
Foarbyld fan automatyske oanmelding op Cisco ASA:
Mei de hân triggerje mei in knop yn SecureCRT (in knop moat noch oanmakke wurde en tafoege oan SecureCRT)
Yn SecureCRT kinne jo in skript tawize oan in knop. De knop wurdt tafoege oan in paniel spesjaal makke foar dit doel.
IN. In paniel tafoegje oan de ynterface: SecureCRT Menu => View => Knopbalke
b. Foegje in knop ta oan it paniel en foegje in skript ta. - Rjochts-klikke op 'e knopbalke en selektearje "Nije knop ..." út it kontekstmenu.
V. Selektearje yn it dialoochfinster "Kaartknop" yn it fjild "Aksje" de aksje "Skript útfiere" (funksje).
Spesifisearje in titel foar de knop. De kleur foar it knoppictogram. Beëinigje de ynstellings troch te klikken op Ok.
Tink derom:
It paniel mei knoppen is heul nuttige funksjonaliteit.
1. It is mooglik, doe't Logon oan in spesifike sesje, te spesifisearjen hokker paniel te iepenjen nei dizze ljepper standert.
2. It is mooglik om te setten foarôf definiearre aksjes foar standert aksjes mei apparatuer: show show ferzje, show running-config, bewarje konfiguraasje.
Gjin skript is ferbûn oan dizze knoppen. Allinnich aksjeline:
Ynstelling - sadat by it wikseljen nei in sesje it nedige paniel mei knoppen iepenet yn 'e sesje-ynstellings:
It makket sin foar de klant om yndividuele skripts yn te stellen foar Login en nei it paniel te gean mei faak kommando's foar de ferkeaper.
As jo drukke op de Go Cisco knop, it paniel skeakelt nei de Cisco Button Bar.
Foarbylden fan it brûken fan ienfâldige en avansearre skripts. (Oefenje út it echte libben.)
Ienfâldige skripts binne genôch foar hast alle gelegenheden. Mar ienris moast ik it skript in bytsje komplisearje - it wurk fersnelle. Dizze komplikaasje frege gewoan ekstra gegevens yn in dialoochfinster fan de brûker.
Gegevens oanfreegje fan de brûker mei in dialoochfinster
Ik hie 2 yn it datafersykskript. Dit is de hostnamme en it 4e oktet fan it IP-adres. Om dizze aksje út te fieren - ik googlede hoe't ik it dwaan en fûn it op 'e offisjele webside fan SecureCRT (vandyke). - de funksjonaliteit wurdt prompt neamd.
Dit diel fan it skript frege om Hostnamme en nûmers fan it lêste oktet. Sûnt wiene der 15 stikken fan apparatuer. En de gegevens waarden presintearre yn in tabel, doe kopiearre ik de wearden út 'e tabel en plakke it yn de dialoochfinsters. Fierder wurke it skript selsstannich.
FTP kopiearje nei netwurk apparatuer.
Dit skript lansearre myn kommando finster (shell) en kopiearre gegevens fia FTP. Oan 'e ein slute de sesje. It is ûnmooglik om notepad foar dit te brûken, om't it kopiearjen in heul lang duorret en de gegevens yn 'e FTP-buffer net sa lang wurde opslein:
# $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()
Brûkersnamme/wachtwurd ynfiere mei in skript
By ien klant tagong ta netwurk apparatuer direkt waard sletten. It wie mooglik om de apparatuer yn te gean troch earst te ferbinen mei de Default Gateway, en dêrwei dan nei de apparatuer dy't dêrmei ferbûn is. De ssh-kliïnt ynboud yn 'e IOS / hardware-software waard brûkt om te ferbinen. Dêrtroch waarden de brûkersnamme en wachtwurd yn 'e konsole oanfrege. Mei it skript hjirûnder waarden de brûkersnamme en wachtwurd automatysk ynfierd:
# $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()
Opmerking: d'r wiene 2 skripts, ien foar it behearderaccount, it twadde foar it eSIGHT-akkount.
Skript mei de mooglikheid om direkt gegevens ta te foegjen tidens skriptútfiering.
De taak wie om in statyske rûte ta te foegjen op alle netwurkapparatuer. Mar de poarte nei it ynternet op elke apparatuer wie oars (en it ferskilde fan 'e standert poarte). It folgjende skript toant de routingtabel, gie de konfiguraasjemodus yn, skreau it kommando net oan 'e ein (it IP-adres fan' e poarte nei it ynternet) - ik haw dit diel tafoege. Neidat ik op Enter drukke, gie it skript troch mei it útfieren fan it kommando.
# $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()
Yn dit skript, yn 'e rigel: crt.Screen.Send ("ip route 10.10.10.8 255.255.255.252 ") wurdt it IP-adres fan 'e gateway net tafoege en der is gjin karre werom. It skript wachtet op de folgjende rigel mei de tekens "(config) #" Dizze tekens ferskynden nei't ik it ip-adres ynfierde en ynfierde.
Konklúzje:
By it skriuwen fan in skript en it útfieren dêrfan moat de regel folge wurde: De tiid foar it skriuwen fan in skript en it útfieren fan in skript moat nea mear wêze as de tiid dy't teoretysk bestege oan itselde wurk mei de hân (kopiearje / plakke fan in notepad, skriuwen en debuggen in playbook foar ansible, skriuwen en debuggen python skript). Dat is, it brûken fan it skript moat tiid besparje, en gjin tiid fergrieme op ienmalige automatisearring fan prosessen (dus as it skript unyk is en der gjin werhelling mear wêze sil). Mar as it skript unyk is en automatisearring mei it skript en it skriuwen / debuggen fan it skript nimt minder tiid dan it op in oare manier te dwaan (ansible, kommandofinster), dan is it skript de bêste oplossing.
Debuggen in skript. It skript groeit stadichoan, debuggen fynt plak op 'e run-in op it earste, twadde, tredde apparaat, en troch de fjirde sil it skript nei alle gedachten folslein operasjoneel wêze.
It útfieren fan in skript (troch brûkersnamme + wachtwurd yn te fieren) mei de mûs is meastentiids flugger dan it kopiearjen fan brûkersnamme en wachtwurd fan in notepad. Mar net feilich út in feiligens eachpunt.
In oar (echt) foarbyld by it brûken fan in skript: Jo hawwe gjin direkte tagong ta netwurk apparatuer. Mar d'r is needsaak om alle netwurkapparatuer te konfigurearjen (bring it yn it tafersjochsysteem, konfigurearje in ekstra brûkersnamme / wachtwurd / snmpv3 brûkersnamme / wachtwurd). D'r is tagong as jo nei de Core-skeakel gean, fanôf jo iepenje SSH nei oare apparatuer. Wêrom kinne jo Ansible net brûke. - Om't wy rinne yn in limyt op it oantal tastiene simultane sesjes op netwurk apparatuer (line vty 0 4, brûkersynterface vty 0 4) (in oare fraach is hoe te begjinnen ferskillende apparatuer yn Ansible mei deselde SSH earste hop).
It skript ferminderet tiid by lange operaasjes - bygelyks it kopiearjen fan bestannen fia FTP. Nei it kopiearjen is foltôge, begjint it skript fuortendaliks te wurkjen. In persoan sil it ein fan it kopiearjen moatte sjen, dan it ein fan it kopiearjen realisearje, en dan de passende kommando's ynfiere. It skript docht it objektyf flugger.
Skripten binne fan tapassing wêr't it ûnmooglik is om ark foar levering fan massagegevens te brûken: Konsole. Of as guon fan 'e gegevens foar de apparatuer unyk is: hostnamme, management ip-adres. Of by it skriuwen fan in programma en debuggen is it dreger dan it tafoegjen fan gegevens dy't ûntfongen binne fan 'e apparatuer wylst it skript rint. - In foarbyld mei in skript foar it foarskriuwen fan in rûte, as elke apparatuer in eigen IP-adres hat fan 'e ynternetprovider. (Myn kollega's skreau sokke skripts - doe't de DMVPN spruts wie mear as 3. It wie nedich om te feroarjen de DMVPN ynstellings).
Case Study: Inisjele ynstellings konfigurearje op in nije skeakel mei de konsole-poarten:
A. Plugged de konsole kabel yn it apparaat.
B. Run it skript
B. Wachte op de útfiering fan it skript
D. Plugged de konsole kabel yn de folgjende apparaat.
E. As de switch net de lêste is, gean dan nei stap B.
As gefolch fan it wurk fan it skript:
it earste wachtwurd is ynsteld op 'e apparatuer.
Brûkersnamme ynfierd
it unike IP-adres fan it apparaat wurdt ynfierd.
PS de operaasje moast werhelle wurde. Omdat Standert ssh wie net konfigurearre / útskeakele. (Ja, dit is myn flater.)
In foarbyld fan in lang skript, mei twa queries: Hostnamme en IP-adres. It waard makke foar it ynstellen fan apparatuer fia de konsole (9600 baud). En ek om de ferbining fan apparatuer oan it netwurk te meitsjen.
Sokke skripts binne meastentiids net nedich, mar it bedrach fan apparatuer is 15 pcs. Talitten flugger opset. It wie rapper om de apparatuer yn te stellen mei it SecureCRT Command-finster.
In akkount ynstelle foar ssh.
In oar foarbyld. Konfiguraasje is ek fia de konsole.
# $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()
Oer SecureCRT:Betelle software: fan $ 99 (de lytste priis is allinich foar SecureCRT foar ien jier) Offisjele webside
In softwarelisinsje wurdt ien kear kocht, mei stipe (foar bywurkjen), dan wurdt de software mei dizze lisinsje foar in ûnbeheinde tiid brûkt.
Wurket op Mac OS X en Windows bestjoeringssystemen.
D'r is skriptstipe (dit artikel)
der binne kommando finster
Serial / Telnet / SSH1 / SSH2 / Shell bestjoeringssysteem