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]()