Los ingenieros de redes a menudo se enfrentan a la tarea de copiar/pegar ciertos fragmentos de un bloc de notas a la consola. Por lo general, debe copiar varios parámetros: nombre de usuario/contraseña y algo más. El uso de scripts le permite acelerar este proceso. PERO las tareas de escribir el script y ejecutar el script deberían tomar menos tiempo en total que la configuración manual, de lo contrario, los scripts son inútiles.
¿Para qué es este artículo? Este artículo es de la serie Fast Start y tiene como objetivo ahorrar tiempo a los ingenieros de red al configurar el equipo (tarea única) en varios dispositivos. Utiliza el software SecureCRT y la función de ejecución de scripts integrada. contenido
El programa SecureCRT tiene un mecanismo de ejecución de script incorporado listo para usar. ¿Para qué sirven los scripts de terminal?
E/S automatizada y validación mínima de E/S.
Acelere la ejecución de tareas rutinarias, reduciendo las pausas entre las configuraciones del equipo. (Reducción de facto de las pausas causadas por el tiempo para realizar acciones de copiar/pasar en el mismo hardware, con 3 o más fragmentos de comando que se aplicarán al hardware).
Este documento cubre las tareas:
Creación de guiones sencillos.
Ejecución de scripts en SecureCRT.
Ejemplos de uso de scripts simples y avanzados. (Práctica de la vida real.)
Creación de guiones sencillos.
Los scripts más simples usan solo dos comandos, Enviar y EsperarCadena. Esta funcionalidad es suficiente para el 90% (o más) de las tareas realizadas.
Los scripts pueden funcionar en Python, JS, VBS (Visual Basic), Perl, etc.
Por lo general, un archivo con la extensión "*.py"
VBS
# $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
Por lo general, un archivo con la extensión "*.vbs"
Cree un script utilizando una entrada de script.
Le permite automatizar el proceso de escribir un guión. Empiezas a escribir un guión. SecureCRT registra los comandos y la respuesta posterior del hardware y muestra el script terminado para usted.
A. Comience a escribir el guión:
Menú SecureCRT => Guión => Iniciar guión de grabación
b. Realice acciones con la consola (realice los pasos de configuración en la CLI).
v Termina de escribir el guión:
Menú SecureCRT => Guión => Dejar de grabar guión…
Guarde el archivo de secuencia de comandos.
Ejemplo de comandos ejecutados y script guardado:
Ejecución de scripts en SecureCRT.
Después de crear/editar el guión, surge una pregunta natural: ¿Cómo aplicar el guión?
Hay varias maneras:
Ejecutar manualmente desde el menú Script
Inicio automático después de la conexión (script de inicio de sesión)
Inicio de sesión automático sin usar un script
Activación manual con un botón en SecureCRT (aún no se ha creado y agregado un botón a SecureCRT)
Ejecutar manualmente desde el menú Script
Menú SecureCRT => Script => Ejecutar…
- Los últimos 10 scripts se recuerdan y están disponibles para un inicio rápido:
Menú SecureCRT => Script => 1 "Nombre de archivo de script"
Menú SecureCRT => Script => 2 "Nombre de archivo de script"
Menú SecureCRT => Script => 3 "Nombre de archivo de script"
Menú SecureCRT => Script => 4 "Nombre de archivo de script"
Menú SecureCRT => Script => 5 "Nombre de archivo de script"
Inicio automático después de la conexión (script de inicio de sesión)
Los ajustes del script de registro automático se configuran para la sesión guardada: Conexión => Acciones de inicio de sesión => Script de inicio de sesión
Inicio de sesión automático sin usar un script
Es posible ingresar automáticamente el nombre de usuario de la contraseña sin escribir un script, utilizando solo la funcionalidad integrada de SecureCRT. En la configuración de conexión "Conexión" => Acciones de inicio de sesión => Automatizar el inicio de sesión: debe completar varios paquetes, lo que significa que los pares: "Texto esperado" + "Caracteres enviados a este texto", puede haber muchos de estos pares. (Ejemplo: el primer par esperando el nombre de usuario, el segundo esperando la contraseña, el tercero esperando el aviso del modo privilegiado, el cuarto par esperando la contraseña del modo privilegiado).
Ejemplo de inicio de sesión automático en Cisco ASA:
Activación manual con un botón en SecureCRT (aún no se ha creado y agregado un botón a SecureCRT)
En SecureCRT, puede asignar un script a un botón. El botón se agrega a un panel especialmente creado para este propósito.
A. Agregar un panel a la interfaz: Menú SecureCRT => Ver => Barra de botones
b. Agregue un botón al panel y agregue un script. – Haga clic con el botón derecho en la barra de botones y seleccione "Nuevo botón..." en el menú contextual.
v En el cuadro de diálogo "Botón de mapa", en el campo "Acción", seleccione la acción (función) "Ejecutar script".
Especifique un título para el botón. El color del icono del botón. Finalice la configuración haciendo clic en Aceptar.
Nota:
El panel con botones es una funcionalidad muy útil.
1. Es posible, cuando inicie sesión en una sesión específica, especificar qué panel abrir en esta pestaña de forma predeterminada.
2. Es posible establecer acciones predefinidas para acciones estándar con el equipo: mostrar la versión, mostrar la configuración en ejecución, guardar la configuración.
No se adjunta ninguna secuencia de comandos a estos botones. Solo línea de acción:
Configuración: para que al cambiar a una sesión, se abra el panel necesario con botones en la configuración de la sesión:
Tiene sentido que el cliente configure scripts individuales para Iniciar sesión e ir al panel con comandos frecuentes para el proveedor.
Cuando presiona el botón Go Cisco, el panel cambia a la barra de botones de Cisco.
Ejemplos de uso de scripts simples y avanzados. (Práctica de la vida real.)
Los guiones simples son suficientes para casi todas las ocasiones. Pero una vez tuve que complicar un poco el guión, para acelerar el trabajo. Esta complicación simplemente solicitaba datos adicionales en un cuadro de diálogo del usuario.
Solicitud de datos del usuario mediante un cuadro de diálogo
En el script de solicitud de datos tenía 2. Este es el nombre de host y el 4.º octeto de la dirección IP. Para realizar esta acción, busqué en Google cómo hacerlo y lo encontré en el sitio web oficial de SecureCRT (vandyke). - la funcionalidad se llama aviso.
Esta parte del script solicitó el nombre de host y los números del último octeto. Ya que había 15 piezas de equipo. Y los datos se presentaron en una tabla, luego copié los valores de la tabla y los pegué en los cuadros de diálogo. Además, el guión funcionó de forma independiente.
Copia FTP a equipos de red.
Este script abrió mi ventana de comandos (shell) y copió datos a través de FTP. Al finalizar, cierra la sesión. Es imposible usar el bloc de notas para esto, porque la copia lleva mucho tiempo y los datos en el búfer FTP no se almacenarán durante tanto tiempo:
# $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()
Ingresar nombre de usuario/contraseña usando un script
A un cliente se le cerró directamente el acceso al equipo de red. Era posible ingresar al equipo conectándose primero al Default Gateway, y de éste luego al equipo conectado a él. Se utilizó el cliente ssh integrado en el software IOS/hardware para conectarse. En consecuencia, se solicitó el nombre de usuario y la contraseña en la consola. Con el siguiente script, el nombre de usuario y la contraseña se ingresaron automáticamente:
# $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: Había 2 scripts, uno para la cuenta de administrador, el segundo para la cuenta de eSIGHT.
Script con la capacidad de agregar datos directamente durante la ejecución del script.
La tarea era agregar una ruta estática en todos los equipos de la red. Pero la puerta de enlace a Internet en cada equipo era diferente (y difería de la puerta de enlace predeterminada). El siguiente script mostró la tabla de enrutamiento, ingresó al modo de configuración, no escribió el comando hasta el final (la dirección IP de la puerta de enlace a Internet): agregué esta parte. Después de presionar Enter, el script continuó ejecutando el comando.
# $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 este script, en la línea: crt.Screen.Send("ip route 10.10.10.8 255.255.255.252") no se agrega la dirección IP de la puerta de enlace y no hay carácter de retorno de carro. El script está esperando la siguiente línea con los caracteres "(config) #". Estos caracteres aparecieron después de que ingresé la dirección IP e ingresé.
CONCLUSIÓN:
Al escribir un script y ejecutarlo, se debe seguir la regla: El tiempo para escribir un script y ejecutar un script nunca debe ser mayor que el tiempo teóricamente dedicado a hacer el mismo trabajo manualmente (copiar / pegar desde un bloc de notas, escribir y depurar). un libro de jugadas para ansible, escribir y depurar secuencias de comandos de python). Es decir, el uso de la secuencia de comandos debería ahorrar tiempo y no perder tiempo en la automatización de procesos de una sola vez (es decir, cuando la secuencia de comandos es única y no habrá más repeticiones). Pero si la secuencia de comandos es única y la automatización con la secuencia de comandos y la escritura/depuración de la secuencia de comandos lleva menos tiempo que hacerlo de cualquier otra forma (ansible, ventana de comandos), entonces la secuencia de comandos es la mejor solución.
Depuración de un script. La secuencia de comandos crece gradualmente, la depuración se lleva a cabo durante la ejecución en el primer, segundo y tercer dispositivo y, para el cuarto, es muy probable que la secuencia de comandos esté completamente operativa.
Ejecutar un script (introduciendo nombre de usuario y contraseña) con el ratón suele ser más rápido que copiar el nombre de usuario y la contraseña de un bloc de notas. Pero no seguro desde el punto de vista de la seguridad.
Otro ejemplo (real) al usar un script: no tiene acceso directo al equipo de red. Pero es necesario configurar todo el equipo de la red (llévelo al sistema de monitoreo, configure un nombre de usuario/contraseña/snmpv3nombre de usuario/contraseña adicionales). Hay acceso cuando vas al conmutador Core, desde allí abres SSH a otros equipos. ¿Por qué no puedes usar Ansible? - Porque nos encontramos con un límite en la cantidad de sesiones simultáneas permitidas en equipos de red (línea vty 0 4, interfaz de usuario vty 0 4) (otra pregunta es cómo iniciar diferentes equipos en Ansible con el mismo primer salto SSH).
El script reduce el tiempo durante operaciones largas, por ejemplo, copiar archivos a través de FTP. Una vez completada la copia, el script comienza a funcionar inmediatamente. Una persona deberá ver el final de la copia, luego darse cuenta del final de la copia y luego ingresar los comandos apropiados. El guión lo hace objetivamente más rápido.
Los scripts son aplicables donde es imposible utilizar herramientas de entrega masiva de datos: Consola. O cuando algunos de los datos del equipo son únicos: nombre de host, dirección IP de administración. O cuando escribir un programa y depurarlo es más difícil que agregar datos recibidos del equipo mientras se ejecuta el script. - Un ejemplo con un script para prescribir una ruta, cuando cada equipo tiene su propia dirección IP del proveedor de Internet. (Mis colegas escribieron dichos scripts, cuando el DMVPN hablaba era más de 3. Era necesario cambiar la configuración del DMVPN).
Estudio de caso: Configuración de los ajustes iniciales en un conmutador nuevo mediante los puertos de la consola:
A. Conectó el cable de la consola al dispositivo.
B. Ejecutar el script
B. Esperó la ejecución del script
D. Conectó el cable de la consola al siguiente dispositivo.
E. Si el interruptor no es el último, vaya al paso B.
Como resultado del trabajo del script:
la contraseña inicial se establece en el equipo.
Nombre de usuario ingresado
se ingresa la dirección IP única del dispositivo.
PD: hubo que repetir la operación. Porque el ssh predeterminado no estaba configurado/deshabilitado. (Sí, este es mi error.)
Un ejemplo de un script largo, con dos consultas: nombre de host y dirección IP. Fue creado para el preajuste de equipos a través de la consola (9600 baudios). Y también para preparar la conexión de equipos a la red.
Por lo general, no se necesitan dichos scripts, pero la cantidad de equipo es de 15 piezas. Permitió una configuración más rápida. Fue más rápido configurar el equipo usando la ventana de comando SecureCRT.
Configuración de una cuenta para ssh.
Otro ejemplo. La configuración también se realiza 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()
Acerca de SecureCRT:Software pago: desde $99 (el precio más bajo es solo para SecureCRT por un año) Sitio web oficial
Una licencia de software se compra una vez, con soporte (para actualización), luego el software se usa con esta licencia por un tiempo ilimitado.
Funciona en los sistemas operativos Mac OS X y Windows.
Hay soporte para scripts (este artículo)
Hay Ventana de comandos
Serie/Telnet/SSH1/SSH2/Sistema operativo Shell