Documentos de Académico
Documentos de Profesional
Documentos de Cultura
HONDURAS
Campus Choluteca
Asignatura:
Telecomunicaciones
Trabajo:
Manual Técnico
Catedrático:
Master Norman A. Cubilla
Alumna:
Elda Margoth Quiroz Sandoval
201710110334
Fecha:
27 de noviembre de 2019
PROCESO PARA INTERCONECTAR UBUNTU SERVER VÍA
SHELL SCRIPTING Y UN ROUTER MIKROTIK VIRTUALIZADO
Lo primero que hicimos fue crear dos máquinas virtuales en VirtualBox, una que se
llama MK2 que es el router Mikrotik y la segunda maquina se llama ApServer que
sería el Ubuntu. Después de instalarlas, actualizamos, instalamos el entorno gráfico,
vimos como conectarnos remotamente, generamos un certificado de seguridad entre
el servidor y el sistema operativo Mikrotik y creamos un usuario.
Nos vamos para el programa WinBox para verificar el usuario y la IP que hemos
configurado. También podemos ver las interfaces que hemos configurado. Mediante
WinBox podemos accesar remotamente al sistema operativo del MikroTik.
sudo su
Ahora vamos a accesar a Mikrotik desde la consola de Ubuntu server. Lo que
hacemos es ubicarnos en la maquina ApServer y abrir una terminal y ejecutamos los
siguientes comandos:
Este comando sirve para ver la IP que hemos asignado. En mi caso la IP local seria la
192.168.0.30.
ping 192.168.0.40
Como podemos ver en la siguiente imagen si hay interconexión entre ellas, desde el
server hay comunicación en el MikroTik.
ssh-keygen –t rsa
Con este comando generamos una clave pública y privadas y un par de llaves.
cd /root/.ssh
Con esto entramos al directorio y vemos las llaves que se han generado.
Ahora vamos a copiar las llaves que hemos generado con los siguientes comandos.
scp id_rsa uth@192.168.0.40:/
scp id_rsa.pub uth@192.168.0.40:/
ssh uth@192.168.0.40
Creamos un archivo shell scripting que se llama add.sh con el siguiente comando.
pico add.sh
idle
Programa add.py
Cuando estamos en el editor de Python abrimos un nuevo archivo con el nombre add.py
que será donde vamos a programar la interfaz con botones, cajas de texto y etiquetas
Lo que hace es importar todas las librerías Tkinter ya que por eso le ponemos un *.
import ttk
import os
Se utiliza para interactuar con el sistema, que básicamente es una interfaz para sistema
operativo del ordenador que ejecuta el programa.
import subprocess
import tkFont
import tkMessageBox
Sirve para generar un mensaje de dialogo. Un cuadro de diálogo es una ventana con un
título, un mensaje, un ícono y uno o más botones. Se emplea para informar al usuario
sobre alguna cuestión o bien exhortarlo a tomar una decisión.
import time
import ScrolledText
Proporciona una clase del mismo nombre que implementa un widget de texto básico que
tiene una barra de desplazamiento vertical configurada para hacer "lo correcto".
v0=Tk()
v0.tittle(“Adding Ip in Mikrotik”)
v0.geometry (“460x648+0+0”)
Sirve para cambiar las propiedades del color de fondo y agregar borde a la ventana.
v0.mainloop
Es una estructura cíclica, esto hace que los objetos se muestren permanentemente al
usuario, es una función reservada.
#ZONA DE FUNCIONES
Aquí definimos todas las funciones que necesitamos y asi los botones puedan
realizar las distintas acciones asignadas.
Este código sirve para limpiar todas las cajas de texto que hemos llenado con
información.
# Aquí declaramos todas las Variables y les pasamos el valor de la caja de texto.
ad=address.get()
inter=interface.get()
comm=comment.get()
# Aqui declaramos las Constantes que son las que conforman la cadena.
enc="#!/bin/bash"
sshpass="sshpass -p \"12345678\" ssh -l uth 192.168.0.40"
tab=" "
addres="ip address add address="
interf="interface="
c="comm="
cs="'"
# crear cadena
cadena1=(str(sshpass)+''+str(tab)+''+str(cs)+''+str(addres)+''+str(ad)+''+str(tab)+''
+str(interf)+''+str(inter)+''+str(tab)+''+str(c)+''+''+str(comm)+str(cs))
Este código es el que permite agregar una nueva dirección IP a través de la función que
hemos definido, ya que utilizamos el archivo add.sh que donde se guardara la cadena
para que haya conexión entre la aplicación y el router MikroTik. El numeral sirve para
poner comentarios al código.
#Aquí declaramos todas las Variables y les pasamos el valor de la caja de texto.
f=flag.get()
# Aquí declaramos las Constantes que son las que conforman la cadena.
enc="#!/bin/bash"
sshpass="sshpass -p \"12345678\" ssh -l uth 192.168.0.40"
tab=" "
remove="ip address remove"
cs="'"
# Crear cadena
cadena2=(str(sshpass)+''+str(tab)+''+str(cs)+''+str(remove)+''+str(tab)+
''+str(f)+''+str(cs))
pf2=open(r'/home/uth/delete.sh','w')
pf2.write(enc) # Insertar encabezado en la primera línea del archivo delete.sh
pf2.write("\n") # Insertar un enter o retorno de carro en el archivo
pf2.write(cadena2) # Insertar la cadena en el archivo
pf2.write("\n") # Insertar un enter o retorno de carro
pf2.close() # Cierre del archivo
time.sleep(0.1) # Tiempo que permite cerrar la operación y luego ejecutar
#Aquí declaramos todas las Variables y les pasamos el valor de la caja de texto.
id_ip=flag_update.get ()
ad=address.get ()
inter=interface.get ()
comm=comment.get ()
# Aquí declaramos las Constantes que son las que conforman la cadena.
enc="#!/bin/bash"
sshpass="sshpass -p \"12345678\" ssh -l uth 192.168.0.40"
# crear cadena
#ejecutar programa
os.system("sudo /./home/uth/update_ip.sh")
Con este código podemos actualizar las direcciones ip que están agregadas en el router
mikrotik. Para ello necesitamos una caja de texto que funciona como un flag donde
ponemos el numero o id de la dirección ip y al presionar actualizar se refresca con la
nueva información ingresada.
def consultar ():
textarea.place(x=10, y=185)
textarea.insert(INSERT,contenido)
v0.after(1000,consultar)
#Esto es para que cargue en la ventana principal, sin necesidad de dar clic a un botón.
consultar()
Este código lo que hace es consultar las direcciones IP disponibles en router, esto se
hace por medio de una TextArea en donde se va a imprimir la información que se ha
guardado en el archivo de texto.
def consultar2 ():
nombre=StringVar ()
nombre.set(contenido2)
v0.after(1000,consultar2)
#Esto es para que cargue en la ventana principal, sin necesidad de dar clic a un botón.
consultar2()
Este código sirve para mandar a imprimir el nombre de router en una caja de texto, sin
necesidad de darle clic a un botón.
#aquí le ponemos los distintos atributos que queremos que tenga la etiqueta.
limpiar=StringVar()
label=Label(v0,text=contenido3, bg="white",
font="Times 14 bold", fg="Teal").place(x=10, y=515)
v0.after(1000, consultar3)
#Esto es para que cargue en la ventana principal, sin necesidad de dar clic a un botón.
consultar3()
Este código sirve para mandar a imprimir el nombre de router en una etiqueta sin
necesidad de darle clic a un botón.
#Aquí declaramos todas las Variables y les pasamos el valor de la caja de texto.
name=agregar1.get ()
# Aquí declaramos las Constantes que son las que conforman la cadena.
enc="#!/bin/bash"
sshpass="sshpass -p \"12345678\" ssh -l uth 192.168.0.40"
# Crear cadena
comando = '{} \"system identity set name= {} \"\n'.format(sshpass, name)
#ejecutar programa
os.system("sudo /./home/uth/pantalla.sh")
else:
tkMessageBox.showinfo(message="Campo Vacio")
Este código permite cambiar el nombre de router Mikrotik a través de la función que
llamamos con un botón y escribiendo el nombre en la caja de texto que definimos.
#FRAME
También puse un frame que lo utilice para ajuntar en un solo cuadro la caja de texto
y las label que utilice para cambiarle nombre a la Mikrotik.
Lo que hice aquí fue colocar un borde en la ventana y darle un color, un grosor al
borde, le cambié el color de fondo y le di un relieve.
Estas líneas de código lo que hacen es modificar el tamaño de la label, darle color y
posicionarla en la ventana v0.
#ETIQUETAS
Despues de crear los botones continuamos programando los demás elementos que
serán necesarios para la funcionalidad de la aplicación, ahora vamos a ver el código
para crear las Label o etiquetas.
Esta etiqueta es para identificar el nombre de la caja de texto que en este caso sería la de
Address.
Esta etiqueta es para identificar el nombre de la caja de texto que en este caso sería la de
Interface.
Esta etiqueta es para identificar el nombre de la caja de texto que en este caso sería la de
el comentario que lleva la dirección IP ingresada.
label_identity=Label(v0,text="Identity:”, font="Times 13 bold",
bg="white").place(x=10,y=50)
Esta etiqueta es para identificar el nombre de la caja de texto que necesitamos para
cambiar el nombre del router Mikrotik que en este caso sería la de el Identity.
Esta etiqueta la utilice como título para dividir la textArea de la caja de texto de cambiar
el nombre.
En todas las Label utilice parámetros para cambiar las propiedades como ser el tipo de
fuente, el tamaño de la letra, el color y la posición donde estará ubicado
global address
global interface
global comment
global flag
global agregar1
global flag update
address=StringVar()
interface=StringVar()
comment=StringVar()
flag=StringVar()
agregar1=StringVar()
flag_update=StringVar()
Aquí declaramos las variables que vamos a utilizar para pasar el valor de las cajas de
textos al router Mikrotik.
# CAJAS DE TEXTO
txt_address=Entry(v0,textvariable=address,width=20).place(x=100,y=50)
txt_interface=Entry(v0,textvariable=interface,width=20).place(x=100,y=80)
En esta caja de texto ingresamos la interface en que queremos que este nuestra address
que hemos ingresado en la caja de texto anterior.
txt_comment=Entry(v0,textvariable=comment,width=20).place(x=100,y=110)
txt_agregar1=Entry(v0,textvariable=agregar1,width=20).place(x=100,y=460)
En esta caja de texto ponemos el nombre que queremos cambiarle al route Mikrotik.
txt_flag=Entry(v0,textvariable=flag,width=2).place(x=300,y=85)
txt_flag_update=Entry(v0,textvariable=flag_update,width=2).place(x=300,y=115)
#BOTONES
Ahora vamos a crear los botones que serán necesario para llevar a cabo la aplicación
que permita agregar, eliminar, consultar y actualizar IP Address. También vamos
utilizar un botón para poder cambiar el nombre del Router MikrotiK. El código que
realizamos para crear los botones es el siguiente:
btn_add=Button(v0,text="Add",command=agregar, bd=2,bg="white",
highlightbackground="Teal", highlightthickness=2,font="Times 11 bold").place(x=330,y=50,
height=27, width=80)
Este botón es el de agregar, que mediante la función que definimos arriba permite que al
presionar el botón se guarde la información contenida en las cajas de texto.
Este botón es el de borrar, que a través de la función que hemos definido permite borrar
las direcciones IP mediante una caja de texto que funciona como un flag en el cual se
coloca el numero o id de la dirección IP que se desea eliminar.
btn_add=Button(v0,text="Actualizar”,command=actualizar, bd=2,bg="white",
highlightbackground="Teal", highlightthickness=2,font="Times 11 bold").place(x=330,y=50,
height=27, width=80)
Este botón de aplicar permite cambiar el nombre del router mikrotik median la función
que hemos definido donde están todas las instrucciones.
Este botón es de cancelar que permite cerrar la ventana, gracias a la función que
declaramos que contiene el código necesario para realizar dicha instrucción.
En una variable pasamos el parámetro para ingresar la ruta donde tenemos la imagen
que queremos en el botón.
ARCHIVOS .SH
Para crear un archivo .sh lo hacemos desde la terminal de ubutu con el siguiente
comando.
pico add.sh
S
e crea el siguiente archivo para eliminar las direcciones IP disponibles en el router.
pico delete.sh
Este archivo se crea para cambiarle el nombre al router mikrotik.
pico pantalla.sh
E
pico update_ip.sh
IMÁGEN DE LA APLICACION