0% found this document useful (0 votes)
9 views11 pages

Utils

The document is a Python script that uses the Tkinter library to create a GUI for configuring network devices via Telnet. It collects various parameters such as IP addresses, VLANs, and credentials for two switches and their corresponding UPEs, then performs login checks and VLAN existence checks. The script also handles configuration commands for the switches and UPEs based on user input, ensuring proper VLAN usage and providing feedback through the GUI.

Uploaded by

Ling Vũ
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
9 views11 pages

Utils

The document is a Python script that uses the Tkinter library to create a GUI for configuring network devices via Telnet. It collects various parameters such as IP addresses, VLANs, and credentials for two switches and their corresponding UPEs, then performs login checks and VLAN existence checks. The script also handles configuration commands for the switches and UPEs based on user input, ensuring proper VLAN usage and providing feedback through the GUI.

Uploaded by

Ling Vũ
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

import tkinter as tk

import warnings
[Link]("ignore", category=DeprecationWarning)
import telnetlib
import time
from tkinter import messagebox
from tkinter import simpledialog

#Khởi tạo các biến sửdụng:


Ip_0 = ""
Port_0 = ""
Vlan_0 = ""
Id_0 = ""
Username_0 = ""
Password_0 = ""
Upe_ip_0 = ""

Upe_user_0 = ""
Upe_pass_0 = ""

Ip_1 = ""
Port_1 = ""
Vlan_1 = ""
Id_1 = ""
Username_1 = ""
Password_1 = ""
Upe_ip_1 = ""

Upe_user_1 = ""
Upe_pass_1 = ""

Virtual_circuit_id = ""
description_for_vlan_0 = ""
description_for_vlan_1 = ""

ip_neighbor_0 = ""
ip_neighbor_1 = ""

def get_data(entry_IP_0, entry_PORT_0, entry_VLAN_0, entry_User_0,


entry_Pass_0, entry_UPE_IP_0,entry_username_UPE_0,entry_password_UPE_0,
entry_IP_1, entry_PORT_1, entry_VLAN_1, entry_User_1, entry_Pass_1,
entry_UPE_IP_1,entry_username_UPE_1, entry_password_UPE_1,
entry_Virtual_circuit_id, entry_description_for_vlan_0,
entry_description_for_vlan_1, entry_ip_neighbor_0,
entry_ip_neighbor_1):
global Ip_0, Port_0, Vlan_0, Id_0, Username_0, Password_0, Ip_1,
Port_1, Vlan_1, Id_1, Username_1, Password_1, Upe_ip_0, Upe_user_0,
Upe_pass_0, Upe_ip_1, Upe_user_1, Upe_pass_1, Virtual_circuit_id,
description_for_vlan_0, description_for_vlan_1, ip_neighbor_0,
ip_neighbor_1
#Switch 0 + UPE 0:

Ip_0 = entry_IP_0.get()
Port_0 = entry_PORT_0.get()
Vlan_0 = entry_VLAN_0.get()
Username_0 = entry_User_0.get()
Password_0 = entry_Pass_0.get()

Upe_ip_0 = entry_UPE_IP_0.get()

Upe_user_0 = entry_username_UPE_0.get()
Upe_pass_0 = entry_password_UPE_0.get()

# Switch 1 + UPE 1
Ip_1 = entry_IP_1.get()
Port_1 = entry_PORT_1.get()
Vlan_1 = entry_VLAN_1.get()
Username_1 = entry_User_1.get()
Password_1 = entry_Pass_1.get()

Upe_ip_1 = entry_UPE_IP_1.get()

Upe_user_1 = entry_username_UPE_1.get()
Upe_pass_1 = entry_password_UPE_1.get()

#Virtual circuit id + description for vlan:


Virtual_circuit_id = entry_Virtual_circuit_id.get()
description_for_vlan_0 = entry_description_for_vlan_0.get()
description_for_vlan_1 = entry_description_for_vlan_1.get()

#Ip neighbor:
ip_neighbor_0 = entry_ip_neighbor_0.get()
ip_neighbor_1 = entry_ip_neighbor_1.get()

#edit Text tkinter widget


def check(text, entry_IP_0, entry_PORT_0, entry_VLAN_0, entry_User_0,
entry_Pass_0, entry_UPE_IP_0,entry_username_UPE_0,entry_password_UPE_0,
entry_IP_1,entry_PORT_1, entry_VLAN_1, entry_User_1, entry_Pass_1,
entry_UPE_IP_1 ,entry_username_UPE_1, entry_password_UPE_1,
entry_Virtual_circuit_id, entry_description_for_vlan_0,
entry_description_for_vlan_1, entry_ip_neighbor_0,
entry_ip_neighbor_1):
[Link](1.0, [Link])
get_data( entry_IP_0, entry_PORT_0, entry_VLAN_0, entry_User_0,
entry_Pass_0, entry_UPE_IP_0,entry_username_UPE_0,entry_password_UPE_0,
entry_IP_1, entry_PORT_1, entry_VLAN_1, entry_User_1, entry_Pass_1,
entry_UPE_IP_1 ,entry_username_UPE_1, entry_password_UPE_1,
entry_Virtual_circuit_id, entry_description_for_vlan_0,
entry_description_for_vlan_1, entry_ip_neighbor_0, entry_ip_neighbor_1)
#Check Switch 0:
# HOST = '[Link]'
# user = 'admin'
# password = 'admin123'
#Vlan da su dung hay chua?
tn = [Link](Ip_0, port = '23')
[Link](0.5)
tn.read_until(b"Username:")
[Link](0.5)
[Link](Username_0.encode('ascii') + b"\n")
[Link](0.5)
tn.read_until(b"Password:")
[Link](0.5)
[Link](Password_0.encode('ascii') + b"\n")
[Link](0.5)
output = tn.read_until(b":").decode('ascii')
msg = [Link]("\n")
if msg[1] == "Error:":
[Link]([Link], "Login Switch Site 1 that bai \r\nKiem tra
lai username va password \r\n")
else:
[Link]([Link], "Login Switch Site 1 thanh cong \r\n")
[Link](b"system-view\n")
[Link](0.5)
tn.read_until(b']')
[Link](0.5)
[Link](b"display vlan " + Vlan_0.encode('ascii') + b"\n")
[Link](0.5)
output = tn.read_until(b']').decode('ascii')
[Link](0.5)
msg2 = [Link]("\n")
check_vlan = str(msg2[-2])
if check_vlan[0:5] == "Error":
[Link]([Link], "Vlan Site 1 chua duoc su dung \r\n")
else:
[Link]([Link],"Vlan Site 1 da duoc su dung \r\nxin moi
nhap lai vlan khac \r\n")

#Check UPE 0:
tn = [Link](Upe_ip_0, port = '23')
tn.read_until(b"login:")
[Link]('lab'.encode('ascii') + b"\n")
[Link](0.5)
tn.read_until(b"password:")
[Link](0.5)
[Link]('lab123'.encode('ascii') + b"\n")
[Link](0.5)
output = tn.read_until(b":").decode('ascii')
msg = [Link]("\n")
if msg[1] == "Last login:":
[Link]([Link], "Login UPE Site 1 thanh cong \r\nNhan
Config de tiep tuc \r\n")
else:
[Link]([Link], "Login UPE Site 1 that bai \r\nKiem tra lai
username va password \r\n")

#Check Switch 1:
# HOST = '[Link]'
# user = 'admin'
# password = 'admin123'
#Vlan da su dung hay chua?
tn = [Link](Ip_1, port = '23')
[Link](0.5)
tn.read_until(b"Username:")
[Link](0.5)
[Link](Username_1.encode('ascii') + b"\n")
[Link](0.5)
tn.read_until(b"Password:")
[Link](0.5)
[Link](Password_1.encode('ascii') + b"\n")
[Link](0.5)
output = tn.read_until(b":").decode('ascii')
msg = [Link]("\n")
if msg[1] == "Error:":
[Link]([Link], "Login Switch Site 2 that bai \r\nKiem tra
lai username va password \r\n")
else:
[Link]([Link], "Login Switch Site 2 thanh cong \r\n")
[Link](b"system-view\n")
[Link](0.5)
tn.read_until(b']')
[Link](0.5)
[Link](b"display vlan " + Vlan_1.encode('ascii') + b"\n")
[Link](0.5)
output = tn.read_until(b']').decode('ascii')
[Link](0.5)
msg2 = [Link]("\n")
check_vlan = str(msg2[-2])
if check_vlan[0:5] == "Error":
[Link]([Link], "Vlan Site 2 chua duoc su dung \r\n")
else:
[Link]([Link],"Vlan Site 2 da duoc su dung \r\nxin moi
nhap lai vlan khac \r\n")

#Check UPE 1:
tn = [Link](Upe_ip_1, port = '23')
tn.read_until(b"login:")
[Link]('lab'.encode('ascii') + b"\n")
[Link](0.5)
tn.read_until(b"password:")
[Link](0.5)
[Link]('lab123'.encode('ascii') + b"\n")
[Link](0.5)
output = tn.read_until(b":").decode('ascii')
msg = [Link]("\n")
if msg[1] == "Last login:":
[Link]([Link], "Login UPE Site 2 thanh cong \r\nNhan
Config de tiep tuc \r\n")
else:
[Link]([Link], "Login UPE Site 2 that bai \r\nKiem tra lai
username va password \r\n")

def config(text, entry_IP_0, entry_PORT_0, entry_VLAN_0, entry_User_0,


entry_Pass_0, entry_UPE_IP_0,entry_username_UPE_0,entry_password_UPE_0,
entry_IP_1, entry_PORT_1, entry_VLAN_1, entry_User_1, entry_Pass_1,
entry_UPE_IP_1 ,entry_username_UPE_1, entry_password_UPE_1,
entry_Virtual_circuit_id, entry_description_for_vlan_0,
entry_description_for_vlan_1,entry_ip_neighbor_0, entry_ip_neighbor_1):
get_data(entry_IP_0, entry_PORT_0, entry_VLAN_0, entry_User_0,
entry_Pass_0, entry_UPE_IP_0,entry_username_UPE_0,entry_password_UPE_0,
entry_IP_1, entry_PORT_1, entry_VLAN_1, entry_User_1, entry_Pass_1,
entry_UPE_IP_1 ,entry_username_UPE_1, entry_password_UPE_1,
entry_Virtual_circuit_id, entry_description_for_vlan_0,
entry_description_for_vlan_1,entry_ip_neighbor_0, entry_ip_neighbor_1)

# SWITCH 0 CONFIG
tn = [Link](Ip_0, port = '23')
[Link](0.5)
tn.read_until(b"Username:")
[Link](0.5)
[Link](Username_0.encode('ascii') + b"\n")
[Link](0.5)
tn.read_until(b"Password:")
[Link](0.5)
[Link](Password_0.encode('ascii') + b"\n")
[Link](0.5)
[Link](b"system-view\n")
[Link](0.5)
[Link](b"vlan " + Vlan_0.encode('ascii') + b"\n")
[Link](0.5)
[Link](b"interface GigabitEthernet0/0/" + Port_0.encode('ascii')
+ b"\n")
[Link](0.5)
[Link](b"port link-type access \n")
[Link](0.5)
[Link](b"port default vlan "+ Vlan_0.encode('ascii') + b"\n")
[Link](0.5)
#Kiem tra port up-link
[Link](b"display mac-address dynamic vlan 3996 \n")
[Link](0.5)
for _ in range(2):
ms1 = tn.read_until(b'----\r\n')
output_0 = tn.read_until(b'dynamic \r\n')
[Link](0.5)
msg = output_0.decode('ascii')
msg = [Link]()
# msg[2] is interface uplink
interface_uplink = str(msg[2])
n = str(interface_uplink[-1])
if interface_uplink[0:3] == "XGE":
[Link](b"int XGigabitEthernet 0/0/"+ [Link]('ascii') + b"\
n")
[Link](0.5)
elif interface_uplink[0:2] == "GE0":
[Link](b"int GigabitEthernet 0/0/"+ [Link]('ascii') + b"\
n")
[Link](0.5)
[Link](b"port trunk allow-pass vlan " + Vlan_0.encode('ascii') +
b"\n")
[Link](0.5)
[Link](b"quit \n")
[Link](0.5)
[Link]([Link], "\r\nConfig for Switch Site 1 success \r\n")
[Link](0.5)
print ("Config for Switch Site 1 success")
[Link]()

# UPE 0 CONFIG
# HOST: [Link]
# user: lab
# pass: lab123
tn = [Link](Upe_ip_0, port = '23')
tn.read_until(b"login:")
[Link](Upe_user_0.encode('ascii') + b"\n")
[Link](0.5)
tn.read_until(b"password:")
[Link](0.5)
[Link](Upe_pass_0.encode('ascii') + b"\n")
[Link](0.5)
[Link](b"configure\n")
[Link](0.5)
print("Login for UPE Site 1 success")
# check interface connect to switch
# [Link](b"show arp | match "+ Ip_0.encode('ascii') + b"\n")
# [Link](0.5)
#Với cơ sở hạ tầng hiện tại, giả thiết răng interfaces up link là
ge-7/3/1. Có thểthêm 2 dòng lệnh trên đểkiể m tra.
#Tim duoc interfaces uplink, kiem tra unit = vlan da duoc su dung
hay chua? Neu roi thi su dung unit khac, neu chua thi tiep tuc
[Link](b"show interfaces ge-7/3/1 | display set | no-more \n")
[Link](0.5)
tn.read_until(b'set interfaces ge-7/3/1 unit')
[Link](0.5)
msg1 = tn.read_until(b'{master}[edit]').decode('ascii')
msg2 = [Link]("\n")
u = []
skip_first = True
unit_da_dung = []
for _ in range(len(msg2)-2):
u = msg2[_].split()
if skip_first:
skip_first = False
unit_da_dung.append(u[0])
else:
unit_da_dung.append(u[4])

unit_da_dung = list(set(unit_da_dung))
tonghop_unit = []
for item in unit_da_dung:
tonghop_unit.append(int(item))
#tonghop_unit la cac unit da duoc su dung
unit = int(Vlan_0)
print(unit)
while unit in tonghop_unit:
answer = [Link]("Kiể m tra unit", "Unit Site 1
đã được sửdụng, vui lòng nhập lại:", parent=[Link]())
if answer is not None:
unit = answer
else:
break
[Link]("Thông báo", f"Unit Site 1 sửdụng là: {unit}")
unit = str(unit)
[Link](b"set interfaces ge-7/3/1 unit " + [Link]('ascii') +
b" description " + description_for_vlan_0.encode('ascii') + b" " +
[Link]('ascii') + b"\n")
[Link](0.5)
[Link](b"set interfaces ge-7/3/1 unit " + [Link]('ascii') +
b" encapsulation vlan-ccc \n")
[Link](0.5)
[Link](b"set interfaces ge-7/3/1 unit " + [Link]('ascii') +
b" vlan-id unit\n")
[Link](0.5)
[Link](b"set interfaces ge-7/3/1 unit " + [Link]('ascii') +
b" input-vlan-map pop \n")
[Link](0.5)
[Link](b"set interfaces ge-7/3/1 unit " + [Link]('ascii') +
b" output-vlan-map push \n")
[Link](0.5)
# ip neighbor: giả thiết rằng [Link]
[Link](b"set protocols l2circuit neighbor " +
ip_neighbor_0.encode('ascii') + b" interface ge-7/3/1." +
[Link]('ascii') + b" virtual-circuit-id " +
Virtual_circuit_id.encode('ascii') + b"\n")
[Link](0.5)
[Link](b"set protocols l2circuit neighbor " +
ip_neighbor_0.encode('ascii') + b" interface ge-7/3/1." +
[Link]('ascii') + b" description " +
description_for_vlan_0.encode('ascii') + b" " + [Link]('ascii') +
b" \n")
[Link](0.5)
[Link](b"set protocols l2circuit neighbor " +
ip_neighbor_0.encode('ascii') + b" interface ge-7/3/1." +
[Link]('ascii') + b" encapsulation-type ethernet\n")
[Link](0.5)
[Link](b"set protocols l2circuit neighbor " +
ip_neighbor_0.encode('ascii') + b" interface ge-7/3/1." +
[Link]('ascii') + b" pseudowire-status-tlv\n")
[Link](0.5)
[Link](b"commit \n")
[Link](0.5)
print("Config for UPE Site 1 success")
[Link]([Link], "\r\nConfig for UPE Site 1 success \r\n")
[Link]()

# SWITCH 1 CONFIG
tn = [Link](Ip_1, port = '23')
[Link](0.5)
tn.read_until(b"Username:")
[Link](0.5)
[Link](Username_1.encode('ascii') + b"\n")
[Link](0.5)
tn.read_until(b"Password:")
[Link](0.5)
[Link](Password_1.encode('ascii') + b"\n")
[Link](0.5)
[Link](b"system-view\n")
[Link](0.5)
[Link](b"vlan " + Vlan_1.encode('ascii') + b"\n")
[Link](0.5)
[Link](b"interface GigabitEthernet0/0/" + Port_1.encode('ascii')
+ b"\n")
[Link](0.5)
[Link](b"port link-type access \n")
[Link](0.5)
[Link](b"port default vlan "+ Vlan_1.encode('ascii') + b"\n")
[Link](0.5)
#Kiem tra port up-link
[Link](b"display mac-address dynamic vlan 3996 \n")
[Link](0.5)
for _ in range(2):
ms1 = tn.read_until(b'----\r\n')
output_0 = tn.read_until(b'dynamic \r\n')
[Link](0.5)
msg = output_0.decode('ascii')
msg = [Link]()
# msg[2] is interface uplink
interface_uplink = str(msg[2])
n = str(interface_uplink[-1])
if interface_uplink[0:3] == "XGE":
[Link](b"int XGigabitEthernet 0/0/"+ [Link]('ascii') + b"\
n")
[Link](0.5)
elif interface_uplink[0:3] == "GE0":
[Link](b"int GigabitEthernet 0/0/"+ [Link]('ascii') + b"\
n")
[Link](0.5)
[Link](b"port trunk allow-pass vlan " + Vlan_1.encode('ascii') +
b"\n")
[Link](0.5)
[Link](b"quit \n")
[Link](0.5)
[Link]([Link], "\r\nConfig for Switch Site 2 success \r\n")
[Link](0.5)
print("Config for Switch Site 2 success")
[Link]()

# UPE 1 CONFIG
# HOST: [Link]
# user: lab
# pass: lab123
tn = [Link](Upe_ip_1, port = '23')
tn.read_until(b"login:")
[Link](Upe_user_1.encode('ascii') + b"\n")
[Link](0.5)
tn.read_until(b"password:")
[Link](0.5)
[Link](Upe_pass_1.encode('ascii') + b"\n")
[Link](0.5)
[Link](b"configure\n")
[Link](0.5)
# check interface connect to switch
#Với cơ sở hạ tầng hiện tại, giả thiết răng interfaces up link là
ge-7/3/1. Có thểthêm 2 dòng lệnh trên đểkiể m tra.
#Tim duoc interfaces uplink, kiem tra unit = vlan da duoc su dung
hay chua? Neu roi thi su dung unit khac, neu chua thi tiep tuc
[Link](b"show interfaces ge-7/3/1 | display set | no-more \n")
[Link](0.5)
tn.read_until(b'set interfaces ge-7/3/1 unit')
[Link](0.5)
msg1 = tn.read_until(b'{master}[edit]').decode('ascii')
msg2 = [Link]("\n")
u = []
skip_first = True
unit_da_dung = []
for _ in range(len(msg2)-2):
u = msg2[_].split()
if skip_first:
skip_first = False
unit_da_dung.append(u[0])
else:
unit_da_dung.append(u[4])

unit_da_dung = list(set(unit_da_dung))
tonghop_unit = []
for item in unit_da_dung:
tonghop_unit.append(int(item))
#tonghop_unit la cac unit da duoc su dung
unit = int(Vlan_1)
while unit in tonghop_unit:
answer = [Link]("Kiể m tra unit", "Unit Site 2
đã được sửdụng, vui lòng nhập lại:", parent=[Link]())
if answer is not None:
unit = answer
else:
break
[Link]("Thông báo", f"Unit Site 2 sửdụng là: {unit}")
unit = str(unit)
[Link](b"set interfaces ge-7/3/1 unit " + [Link]('ascii') +
b" description " + description_for_vlan_1.encode('ascii') + b" " +
[Link]('ascii') + b"\n")
[Link](0.5)
[Link](b"set interfaces ge-7/3/1 unit " + [Link]('ascii') +
b" encapsulation vlan-ccc \n")
[Link](0.5)
[Link](b"set interfaces ge-7/3/1 unit " + [Link]('ascii') +
b" vlan-id unit\n")
[Link](0.5)
[Link](b"set interfaces ge-7/3/1 unit " + [Link]('ascii') +
b" input-vlan-map pop \n")
[Link](0.5)
[Link](b"set interfaces ge-7/3/1 unit " + [Link]('ascii') +
b" output-vlan-map push \n")
[Link](0.5)
# [Link]: ip neighbor
[Link](b"set protocols l2circuit neighbor " +
ip_neighbor_1.encode('ascii') + b" interface ge-7/3/1." +
[Link]('ascii') + b" virtual-circuit-id " +
Virtual_circuit_id.encode('ascii') + b"\n")
[Link](0.5)
[Link](b"set protocols l2circuit neighbor " +
ip_neighbor_1.encode('ascii') + b" interface ge-7/3/1." +
[Link]('ascii') + b" description " +
description_for_vlan_1.encode('ascii') + b" " + [Link]('ascii') +
b" \n")
[Link](0.5)
[Link](b"set protocols l2circuit neighbor " +
ip_neighbor_1.encode('ascii') + b" interface ge-7/3/1." +
[Link]('ascii') + b" encapsulation-type ethernet\n")
[Link](0.5)
[Link](b"set protocols l2circuit neighbor " +
ip_neighbor_1.encode('ascii') + b" interface ge-7/3/1." +
[Link]('ascii') + b" pseudowire-status-tlv\n")
[Link](0.5)
[Link](b"commit \n")
[Link](0.5)
[Link]([Link], "\r\nConfig for UPE Site 2 success \r\n")
print("Config for UPE Site 2 success")
[Link]()

You might also like