Pysros 2

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 8

# Importamos las librerías necesarias

import pyros

import paramiko

import fabric

# Creamos una función para conectarnos a un dispositivo de red

def connect(host, username, password):

# Creamos una instancia de la clase SSHClient de paramiko

client = paramiko.SSHClient()

# Establecemos la política de conexión para aceptar el host

client.set_missing_host_key_policy(paramiko.AutoAddPolicy())

# Nos conectamos al host

client.connect(host, username=username, password=password)

return client

# Creamos una función para configurar un iom

def configure_iom(client, iom_id, mda_id):

# Usamos la clase SSHClient de paramiko para enviar comandos al dispositivo

# y obtener la salida

stdin, stdout, stderr = client.exec_command("configure terminal")

# Verificamos si hay algún error en la ejecución del comando

if stderr.channel.recv_exit_status() != 0:

print("Error al entrar en modo de configuración")

return

# Configuramos el iom con el ID especificado

stdin, stdout, stderr = client.exec_command(f"module {iom_id}")

if stderr.channel.recv_exit_status() != 0:

print(f"Error al configurar el iom {iom_id}")


return

# Configuramos la mda con el ID especificado

stdin, stdout, stderr = client.exec_command(f"mda {mda_id}")

if stderr.channel.recv_exit_status() != 0:

print(f"Error al configurar la mda {mda_id}")

return

# Guardamos la configuración

stdin, stdout, stderr = client.exec_command("end")

if stderr.channel.recv_exit_status() != 0:

print("Error al guardar la configuración")

return

print(f"IOM {iom_id} y MDA {mda_id} configurados correctamente")

# Creamos una función para configurar un puerto

def configure_port(client, port_id, port_type):

# Entramos en modo de configuración

stdin, stdout, stderr = client.exec_command("configure terminal


# Verificamos si hay algún error en la ejecución del comando

if stderr.channel.recv_exit_status() != 0:

print("Error al entrar en modo de configuración")

return

# Configuramos el puerto con el ID y tipo especificados

stdin, stdout, stderr = client.exec_command(f"interface {port_id}")

if stderr.channel.recv_exit_status() != 0:

print(f"Error al configurar el puerto {port_id}")

return

stdin, stdout, stderr = client.exec_command(f"switchport mode {port_type}")

if stderr.channel.recv_exit_status() != 0:

print(f"Error al configurar el tipo de puerto {port_type} en el puerto {port_id}")

return

# Guardamos la configuración

stdin, stdout, stderr = client.exec_command("end")

if stderr.channel.recv_exit_status() != 0:

print("Error al guardar la configuración")

return

print(f"Puerto {port_id} configurado correctamente como {port_type}")

# Creamos una función para configurar las interfaces de un dispositivo de red

def configure_interfaces(client):
# Obtenemos la lista de interfaces del dispositivo

stdin, stdout, stderr = client.exec_command("show interface")

output = stdout.read().decode("utf-8")

# Iteramos sobre cada línea del resultado del comando

for line in output.split("\n"):

# Buscamos las líneas que contengan información de las interfaces

if "Ethernet" in line:

# Obtenemos el ID y el tipo de la interfaz

parts = line.split()

interface_id = parts[0]

interface_type = parts[-1]

# Configuramos la interfaz

configure_port(client, interface_id, interface_type)

from pysros.management import connect


from pysros.exceptions import ModelProcessingError
import sys

def get_connection():
try:
connection_object = connect(host="192.168.74.51",
username="admin",
password="admin")
except RuntimeError as runtime_error:
print("Failed to connect. Error:", runtime_error)
sys.exit(-1)
except ModelProcessingError as model_proc_error:
print("Failed to create model-driven schema. Error:",
model_proc_error)
sys.exit(-2)
return connection_object

if __name__ == "__main__":
connection_object = get_connection()
Este código parece ser un fragmento de un script que se conecta a un servidor de gestión de
red mediante la biblioteca pysros. La función get_connection() se encarga de intentar
establecer una conexión con el servidor usando los parámetros especificados en la llamada
a connect(). Si se produce un error al intentar conectarse, se imprime un mensaje y se
termina el script con un código de salida indicativo del error. Si la conexión se establece
con éxito, se devuelve un objeto de conexión que se puede usar para realizar operaciones en
el servidor.

En este caso en particular, se está intentando conectarse al servidor en la dirección IP


"192.168.74.51" usando el usuario "admin" y la contraseña "admin". Si la conexión se
establece correctamente, se devolverá un objeto de conexión que se puede usar para realizar
operaciones en el servidor. Si se produce un error, se imprimirá un mensaje y el script
finalizará con un código de salida específico del error.

La biblioteca pysros es una biblioteca de Python para trabajar con dispositivos de red que
implementan la especificación de servidor de gestión de red (NETCONF) y/o el protocolo
de gestión de red abierta (OpenConfig). Con pysros, los desarrolladores pueden usar
Python para conectarse a dispositivos de red que implementen NETCONF o OpenConfig y
realizar operaciones de configuración y gestión en ellos.

La biblioteca pysros proporciona una interfaz de Python para interactuar con los
dispositivos de red que implementen NETCONF o OpenConfig. Esto permite a los
desarrolladores escribir scripts en Python que puedan conectarse a estos dispositivos,
enviarles comandos y recibir respuestas, y realizar operaciones de configuración y gestión
de manera programática. Además, pysros proporciona un conjunto de herramientas para
trabajar con los datos recibidos de los dispositivos de red, como la generación de un
esquema de datos basado en el modelo de configuración de un dispositivo, lo que facilita el
trabajo con los datos recibidos de los dispositivos de red.

El Model-driven SR OS interface de pysros es una característica que permite trabajar con


dispositivos de red que implementen el protocolo de gestión de red abierta (OpenConfig) y
utilicen el sistema operativo SR OS de Nokia. El Model-driven SR OS interface
proporciona una interfaz de Python que permite a los desarrolladores conectarse a estos
dispositivos de red y realizar operaciones de configuración y gestión de manera
programática, utilizando el modelo de configuración de SR OS de Nokia como base para
generar un esquema de datos.

Esto permite a los desarrolladores trabajar con dispositivos de red que implementen SR OS
de manera más eficiente y fácil, ya que pueden utilizar el modelo de configuración de SR
OS de Nokia para acceder a los datos de configuración y gestión de los dispositivos de
manera más intuitiva y fácil de usar. Además, el Model-driven SR OS interface de pysros
también permite a los desarrolladores generar y enviar operaciones de configuración y
gestión a los dispositivos de red de manera más sencilla, ya que utiliza el modelo de
configuración de SR OS de Nokia para generar los comandos necesarios de manera
automática.

 connect(): Esta función se utiliza para conectarse a un dispositivo de red que


implemente NETCONF o OpenConfig. La función recibe una serie de parámetros, como la
dirección IP del dispositivo, el usuario y la contraseña para autenticarse, y devuelve un
objeto de conexión que se puede usar para realizar operaciones en el dispositivo de red.
 get_config(): Este método se utiliza para obtener la configuración actual de un
dispositivo de red. El método recibe como parámetro un objeto de conexión y devuelve la
configuración del dispositivo en un formato que se puede manipular fácilmente en Python.
 edit_config(): Este método se utiliza para enviar una operación de configuración al
dispositivo de red. El método recibe como parámetros un objeto de conexión y una
operación de configuración en formato XML, y envía la operación al dispositivo de red
para que la aplique.
 get(): Este método se utiliza para enviar una operación de consulta al dispositivo de red
y recibir su respuesta. El método recibe como parámetros un objeto de conexión y una
operación de consulta en formato XML, y envía la operación al dispositivo de red para que
la procese y devuelva una respuesta.
 close(): Este método se utiliza para cerrar una conexión con un dispositivo de red. El
método recibe como parámetro un objeto de conexión y cierra la conexión con el
dispositivo de red.

 get_schema(): Este método se utiliza para obtener el esquema de datos de un


dispositivo de red. El método recibe como parámetro un objeto de conexión y
devuelve el esquema de datos del dispositivo en un formato que se puede manipular
fácilmente en Python.
 copy_config(): Este método se utiliza para copiar la configuración de un
dispositivo de red a otro dispositivo. El método recibe como parámetros dos objetos
de conexión, uno para el dispositivo de origen y otro para el dispositivo de destino,
y copia la configuración del dispositivo de origen al dispositivo de destino.
 commit(): Este método se utiliza para confirmar una operación de configuración en
un dispositivo de red. El método recibe como parámetro un objeto de conexión y
confirma la operación de configuración en el dispositivo de red.
 discard_changes(): Este método se utiliza para descartar cambios en un
dispositivo de red. El método recibe como parámetro un objeto de conexión y
descarta cualquier cambio pendiente en el dispositivo de red.
 lock(): Este método se utiliza para bloquear un dispositivo de red para evitar que
se realicen cambios en su configuración. El método recibe como parámetro un
objeto de conexión y bloquea el dispositivo de red para evitar que se realicen
cambios en su configuración.
 get_model(): Este método se utiliza para obtener el modelo de configuración de un
dispositivo de red que implemente SR OS de Nokia. El método recibe como
parámetro un objeto de conexión y devuelve el modelo de configuración del
dispositivo en un formato que se puede manipular fácilmente en Python.
 get_data(): Este método se utiliza para obtener los datos de configuración y
estado de un dispositivo de red que implemente SR OS de Nokia. El método recibe
como parámetro un objeto de conexión y devuelve los datos del dispositivo en un
formato que se puede manipular fácilmente en Python.
 set_data(): Este método se utiliza para enviar una operación de configuración a
un dispositivo de red que implemente SR OS de Nokia. El método recibe como
parámetros un objeto de conexión y una operación de configuración en formato
Python, y envía la operación al dispositivo de red para que la aplique.
 delete_data(): Este método se utiliza para enviar una operación de eliminación a
un dispositivo de red que implemente SR OS de Nokia. El método recibe como
parámetros un objeto de conexión y una operación de eliminación en formato
Python, y envía la operación al dispositivo de red para que la aplique.
 replace_data(): Este método se utiliza para enviar una operación de reemplazo a
un dispositivo de red que implemente SR OS de Nokia. El método recibe como
parámetros un objeto de conexión y una operación de reemplazo en formato Python,
y envía la operación al dispositivo de red para que la aplique.

from pysros.network import Router

from getpass import getpass

# Preguntamos al usuario por el nombre del sistema

system_name = input("Ingrese el nombre del sistema: ")

# Preguntamos al usuario por el tipo de tarjeta IOM

iom_card_type = input("Ingrese el tipo de tarjeta IOM (iom3-xp-b, iom-v, etc.): ")

# Preguntamos al usuario por el tipo de MDA

mda_type = input("Ingrese el tipo de MDA (m5-1gb-sfp-b, isa-aa-v, etc.): ")

# Preguntamos al usuario si desea activar los puertos 1-20

activate_ports = input("¿Desea activar los puertos 1-20? (S/n): ")


# Iniciamos sesión en el dispositivo

username = input("Ingrese su nombre de usuario: ")

password = getpass("Ingrese su contraseña: ")

with Router("192.0.2.1", user=admin, password=admin) as r:

# Configuramos el nombre del sistema

r.config("configure system name " + system_name)

# Configuramos el tipo de tarjeta IOM

r.config("card 1 card-type " + iom_card_type)

# Configuramos el tipo de MDA

r.config("configure card 1 mda 1 mda-type " + mda_type)

# Si el usuario desea activar los puertos 1-20, los configuramos

if activate_ports.lower() == "s":

for i in range(1, 21):

r.config(f"configure port 1/1/{i}")

puedes crear un script con pysros donde pueda crear un system name "cualquiera" con el
comando configure system name (+el nombre) configurar los tipos de tarjetas IOM que pueda ser
lanzando estos comandos :configure card 1 card-type iom3-xp-b o configure card 1 card-type
"iom-v" configurar un mda que pueda ser con estos comandos: configure card 1 mda 1 mda-type
"m5-1gb-sfp-b" o configure card 1 mda 1 mda-type "isa-aa-v" o configure card 1 mda 1 mda-type
"isa-tunnel-v" o configure card 1 mda 1 mda-type "isa-bb-v" o configure card 1 mda 1 mda-type
"m20-v" y que en el codigo pregunte siquieres añadir otra mda te deje agregar uno de estos
comandos tambien una linea donde se configuren los port y que pregunte deseas activar el puerto
1 al 20 y si es el 1 entonces aplique este comando configure port 1/1/1 no shutdown, si es el 2
aplique configure port 1/1/2 no shutdown, y asi sucesivamente hasta el 20

También podría gustarte