Software Defined Networking (SDN) es una de las técnicas con mayor tendencia actualmente en el mundo de las redes, nos brinda la oportunidad de automatizar nuestra red en gran manera.
Usaremos diversas herramientas en Python (en estas publicaciones usaré Python 3) desde el cual nos conectaremos a los dispositivos por Telnet y podremos hacer uso de varios ciclos como “for, while, if” etc.
l El primer paso es instalas las herramientas necesarias en el Linux de preferencia:
apt-get install update
apt-get install python3-pip
pip3 install -U netmiko
ubuntu
apt-get update
apt-get install python
apt-get install python3-pip
pip3 install -U netmiko
pip3 install -U napalm
pip3 install -U simplejson
NAPALM install
apt-get update
apt-get install python -y
apt-get install build-essential libssl-dev libffi-dev -y
pip install cryptography
pip install netmiko
pip install napalm
l Es recomendable instalar un IDE para Python, en mi caso instale el PyCharm:
l Posteriormente, creamos el código en python para ingresar por telnet al dispositivo:
Importacion de bibliotecas para poder usar funciones de telnet y de password.
import getpass
import telnetlib
Después de ello podemos asignar la IP a una variable o pedírsela al usuario al momento de la ejecución del programa.
HOST = "192.168.0.1"
user = input("User for telnet: ")
Luego mandamus a pedir el password usando las funciones que obtendremos de la biblioteca “getpass”
password = getpass.getpass()
De igual manera pero ahora con la biblioteca telnetlib, iniciaremos la conexión por telnet.
tn = telnetlib.Telnet(HOST)
Luego esperaremos a que el dispositivo nos pida el nombre de Usuario y lo escribiremos con codificación ascii seguiro de un retorno de carro, usando las funciones tn.read y tn.write
tn.read_until(b"Username:")
tn.write(user.encode('ascii') + b"\n")
La consola esperará a que el password sea solicitado e insertará la variable que previamente había almacenado seguido de un retorno de carro:
if password:
tn.read_until(b"Password:")
tn.write(password.encode('ascii') + b"\n")
Con la función tn.write, enviaremos cualquier dispositivo de Network de Huawei los comandos necesarios. En este caso de ejemplo, configura una interfaz loopback y le asigna una dirección IP:
tn.write(b"screen-length 0 temporary\n")
tn.write(b"system\n")
tn.write(b"interface LoopBack1023\n")
tn.write(b"ip add 7.7.7.7 32\n")
tn.write(b"quit\n")
tn.write(b"quit\n")
tn.write(b"quit\n")
Al final y dado que querremos ver en pantalla todo lo que nuestro programa está haciendo en el fondo, almacenaremos la salida de toda la ejecución en una variable (con la función read all) y colocaremos toda la salida en una variable y la imprimiremos en pantalla con la “write”
print(tn.read_all().decode("ascii"))
#YourScreen = tn.read_all()
#saveoutput.write(YourScreen.decode('ascii'))
#saveoutput.write("\n")
#saveoutput.close
Existe la opción de trabar con ese código en un IDE antes de colocarlo en el editor de Linux, o realizarlo en el mismo editor.
Para colocarlo en el editor, sugiero usar “nano”.
Como se puede observar en la siguiente imagen
Luego de ello podemos ver la ejecuión de nuestro código, podemos ver donde fue que colocamos el texto en nano y posteriormente la ejecución:
Posteriormente, podremos ingresar al switch para ver que nuestra interfaz, ya quedó configurada:
Espero que esto te haya sido útil como un primer y básico paso en Software Defined Network con Huawei.