Automatització de l'entrada a SecureCRT mitjançant scripts
Els enginyers de xarxa sovint s'enfronten a la tasca de copiar/enganxar determinats fragments d'un bloc de notes a la consola. Normalment heu de copiar diversos paràmetres: Nom d'usuari/Contrasenya i una altra cosa. L'ús d'scripts permet accelerar aquest procés. PERÒ les tasques d'escriure l'script i executar l'script haurien de trigar menys temps que la configuració manual, en cas contrari, els scripts no serveixen per a res.
Per a què serveix aquest article? Aquest article és de la sèrie Fast Start i té com a objectiu estalviar temps als enginyers de xarxa quan configuren equips (una tasca) en diversos dispositius. Utilitza el programari SecureCRT i la funcionalitat d'execució d'scripts integrada. Contingut
El programa SecureCRT té un mecanisme d'execució d'scripts integrat. Per a què serveixen els scripts de terminal?
E/S automatitzada i validació mínima d'E/S.
Accelera l'execució de les tasques rutinàries, reduint les pauses entre la configuració de l'equip. (Reducció de fet de les pauses causades pel temps per realitzar accions de còpia/passat al mateix maquinari, amb 3 o més fragments d'ordres que s'aplicaran al maquinari.)
Aquest document inclou les tasques:
Creació de scripts senzills.
Execució d'scripts a SecureCRT.
Exemples d'ús de scripts simples i avançats. (Pràctica des de la vida real.)
Creació de scripts senzills.
Els scripts més senzills utilitzen només dues ordres, Send i WaitForString. Aquesta funcionalitat és suficient per al 90% (o més) de les tasques realitzades.
Els scripts poden funcionar en Python, JS, VBS (Visual Basic), Perl, etc.
# $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
Normalment un fitxer amb l'extensió "*.vbs"
Creeu un script mitjançant una entrada d'script.
Permet automatitzar el procés d'escriptura d'un script. Comences a escriure un guió. SecureCRT registra les ordres i la resposta del maquinari posterior i us mostra l'script acabat.
A. Comença a escriure el guió:
Menú SecureCRT => Script => Inicia l'script d'enregistrament
b. Realitzeu accions amb la consola (realitzeu els passos de configuració a la CLI).
V. Acabeu d'escriure el guió:
Menú SecureCRT => Script => Atura la gravació de l'script...
Deseu el fitxer d'script.
Exemple d'ordres executades i script desat:
Execució d'scripts a SecureCRT.
Després de crear/editar el guió, sorgeix una pregunta natural: Com aplicar el guió?
Hi ha diverses maneres:
S'executa manualment des del menú Script
Inici automàtic després de la connexió (script d'inici de sessió)
Inici de sessió automàtic sense utilitzar un script
Activació manual amb un botó a SecureCRT (encara no s'ha creat i afegit un botó a SecureCRT)
S'executa manualment des del menú Script
Menú SecureCRT => Script => Executar...
- Els darrers 10 scripts es recorden i estan disponibles per a un llançament ràpid:
Menú SecureCRT => Script => 1 "Nom del fitxer d'script"
Menú SecureCRT => Script => 2 "Nom del fitxer d'script"
Menú SecureCRT => Script => 3 "Nom del fitxer d'script"
Menú SecureCRT => Script => 4 "Nom del fitxer d'script"
Menú SecureCRT => Script => 5 "Nom del fitxer d'script"
Inici automàtic després de la connexió (script d'inici de sessió)
La configuració de l'script de registre automàtic es configura per a la sessió desada: Connexió => Accions d'inici de sessió => Script d'inici de sessió
Inici de sessió automàtic sense utilitzar un script
És possible introduir automàticament el nom d'usuari de la contrasenya sense escriure cap script, utilitzant només la funcionalitat integrada de SecureCRT. A la configuració de connexió "Connexió" => Accions d'inici de sessió => Automatitzar l'inici de sessió - heu d'omplir diversos paquets - que signifiquen els parells: "Text esperat" + "Caràcters enviats a aquest text" hi pot haver molts parells. (Exemple: el primer parell esperant el nom d'usuari, el segon esperant la contrasenya, el tercer esperant el missatge del mode privilegiat, el quart parell per a la contrasenya del mode privilegiat.)
Exemple d'inici de sessió automàtic a Cisco ASA:
Activació manual amb un botó a SecureCRT (encara no s'ha creat i afegit un botó a SecureCRT)
A SecureCRT, podeu assignar un script a un botó. El botó s'afegeix a un panell creat especialment per a aquest propòsit.
A. Afegeix un panell a la interfície: Menú SecureCRT => Visualitza => Barra de botons
b. Afegiu un botó al tauler i afegiu un script. - Feu clic amb el botó dret a la barra de botons i seleccioneu "Botó nou..." al menú contextual.
V. Al quadre de diàleg "Botó del mapa", al camp "Acció", seleccioneu l'acció (funció) "Executar script".
Especifiqueu un títol per al botó. El color de la icona del botó. Finalitzeu la configuració fent clic a D'acord.
Nota:
El panell amb botons és una funcionalitat molt útil.
1. Quan inicieu sessió en una sessió específica, és possible especificar quin panell s'obrirà a aquesta pestanya de manera predeterminada.
2. És possible establir accions predefinides per a accions estàndard amb equip: mostrar la versió, mostrar la configuració en execució, desar la configuració.
No s'adjunta cap script a aquests botons. Només línia d'acció:
Configuració: de manera que quan es canvia a una sessió, s'obri el tauler necessari amb botons a la configuració de la sessió:
Té sentit que el client configure scripts individuals per iniciar sessió i vagi al tauler amb ordres freqüents per al venedor.
Quan premeu el botó Go Cisco, el tauler canvia a la barra de botons de Cisco.
Exemples d'ús de scripts simples i avançats. (Pràctica des de la vida real.)
Els scripts senzills són suficients per a gairebé totes les ocasions. Però una vegada vaig haver de complicar una mica el guió, per accelerar el treball. Aquesta complicació simplement sol·licitava dades addicionals en un quadre de diàleg de l'usuari.
Sol·licitud de dades a l'usuari mitjançant un quadre de diàleg
En tenia 2 a l'script de sol·licitud de dades. Aquest és el nom d'amfitrió i el quart octet de l'adreça IP. Per realitzar aquesta acció, vaig buscar a Google com fer-ho i ho vaig trobar al lloc web oficial de SecureCRT (vandyke). - la funcionalitat s'anomena prompt.
Aquesta part de l'script va demanar el nom d'amfitrió i els números de l'últim octet. Ja que hi havia 15 peces d'equip. I les dades es van presentar en una taula, després vaig copiar els valors de la taula i els vaig enganxar als quadres de diàleg. A més, el guió va funcionar de manera independent.
Còpia FTP a l'equip de xarxa.
Aquest script va llançar la meva finestra d'ordres (shell) i va copiar dades mitjançant FTP. En acabar, tanqueu la sessió. És impossible utilitzar el bloc de notes per a això, perquè la còpia triga molt de temps i les dades del buffer FTP no s'emmagatzemaran durant tant de temps:
# $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()
Introduir el nom d'usuari/contrasenya mitjançant un script
En un dels clients es va tancar directament l'accés als equips de xarxa. Va ser possible entrar a l'equip connectant-se primer a la passarel·la predeterminada i, a partir d'aquesta, a l'equip connectat a ella. Es va utilitzar el client ssh integrat al programari IOS/maquinari per connectar-se. En conseqüència, el nom d'usuari i la contrasenya es van demanar a la consola. Amb l'script següent, el nom d'usuari i la contrasenya s'han introduït automàticament:
# $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()
Nota: hi havia 2 scripts. Un per al compte d'administrador i el segon per al compte eSIGHT.
Script amb la capacitat d'afegir dades directament durant l'execució de l'script.
La tasca era afegir una ruta estàtica a tots els equips de xarxa. Però la passarel·la a Internet de cada equip era diferent (i era diferent de la passarel·la predeterminada). El següent script mostrava la taula d'encaminament, va entrar al mode de configuració, no va escriure l'ordre fins al final (l'adreça IP de la passarel·la a Internet): he afegit aquesta part. Després de prémer Enter, l'script va continuar executant l'ordre.
# $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()
En aquest script, a la línia: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252") l'adreça IP de la passarel·la no s'afegeix i no hi ha cap caràcter de retorn de carro. L'script està esperant la següent línia amb els caràcters "(config) #" Aquests caràcters van aparèixer després d'introduir l'adreça IP i entrar.
conclusió:
En escriure un script i executar-lo, s'ha de seguir la regla: El temps per escriure un script i executar un script mai no hauria de ser superior al temps teòricament dedicat a fer el mateix treball manualment (copiar/enganxar des d'un bloc de notes, escriure i depurar). un llibre de jugades per a ansible, escriure i depurar script Python). És a dir, l'ús de l'script hauria d'estalviar temps i no perdre temps en l'automatització puntual dels processos (és a dir, quan l'script és únic i no hi haurà més repetició). Però si l'script és únic i l'automatització amb l'script i escriure/depurar l'script triga menys temps que fer-ho de qualsevol altra manera (ansible, finestra d'ordres), aleshores l'script és la millor solució.
Depuració d'un script. L'script creix gradualment, la depuració es realitza a l'inici del primer, segon i tercer dispositiu i, al quart, és probable que l'script estigui completament operatiu.
Executar un script (introduint nom d'usuari+contrasenya) amb el ratolí sol ser més ràpid que copiar el nom d'usuari i la contrasenya des d'un bloc de notes. Però no segur des del punt de vista de la seguretat.
Un altre exemple (real) quan utilitzeu un script: no teniu accés directe als equips de xarxa. Però cal configurar tots els equips de xarxa (introduir-los al sistema de supervisió, configurar un Nom d'usuari/contrasenya/snmpv3nom d'usuari/contrasenya addicional). Hi ha accés quan aneu a l'interruptor Core, des d'ell obriu SSH a altres equips. Per què no podeu utilitzar Ansible? - Perquè ens trobem amb un límit en el nombre de sessions simultànies permeses en equips de xarxa (línia vty 0 4, interfície d'usuari vty 0 4) (una altra pregunta és com iniciar diferents equips a Ansible amb el mateix primer salt SSH).
L'script redueix el temps durant les operacions llargues, per exemple, la còpia de fitxers mitjançant FTP. Un cop finalitzada la còpia, l'script comença a funcionar immediatament. Una persona haurà de veure el final de la còpia, després adonar-se del final de la còpia i, a continuació, introduir les ordres adequades. El guió ho fa objectivament més ràpid.
Els scripts són aplicables quan és impossible utilitzar eines de lliurament massiu de dades: Consola. O quan algunes de les dades de l'equip són úniques: nom d'amfitrió, adreça IP de gestió. O quan s'escriu un programa i es depura és més difícil que afegir dades rebudes de l'equip mentre s'executa l'script. - Un exemple amb un script per a la prescripció d'una ruta, quan cada equip té la seva pròpia adreça IP del proveïdor d'Internet. (Els meus col·legues van escriure aquests scripts: quan el DMVPN parlava era de més de 3. Calia canviar la configuració del DMVPN).
Cas pràctic: Configuració de la configuració inicial en un commutador nou mitjançant els ports de la consola:
A. Connecteu el cable de la consola al dispositiu.
B. Executeu l'script
B. S'ha esperat l'execució del guió
D. Connecteu el cable de la consola al dispositiu següent.
E. Si l'interruptor no és l'últim, aneu al pas B.
Com a resultat del treball del guió:
la contrasenya inicial s'estableix a l'equip.
S'ha introduït el nom d'usuari
s'introdueix l'adreça IP única del dispositiu.
PD: calia repetir l'operació. Perquè ssh per defecte no s'ha configurat/desactivat. (Sí, aquest és el meu error.)
Un exemple d'script llarg, amb dues consultes: Nom d'amfitrió i adreça IP. Va ser creat per a la preconfiguració d'equips a través de la consola (9600 bauds). I també per preparar la connexió dels equips a la xarxa.
Aquests scripts no solen ser necessaris, però la quantitat d'equip és de 15 peces. Es permet una configuració més ràpida. Va ser més ràpid configurar l'equip mitjançant la finestra d'ordres SecureCRT.
Configuració d'un compte per a ssh.
Un altre exemple. La configuració també es fa a través de la consola.
# $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()
Sobre SecureCRT:Programari de pagament: a partir de 99 dòlars (el preu més baix només és per a SecureCRT durant un any) Lloc web oficial
Una llicència de programari s'adquireix una vegada, amb suport (per a l'actualització), després el programari s'utilitza amb aquesta llicència durant un temps il·limitat.
Funciona amb sistemes operatius Mac OS X i Windows.
Hi ha suport de script (aquest article)
Hi Finestra de comandaments
Sistema operatiu sèrie/Telnet/SSH1/SSH2/Shell