from PyQt5 import QtCore, QtGui, QtWidgets
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(733, 754)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setObjectName("centralwidget")
self.tabWidget = QtWidgets.QTabWidget(self.centralwidget)
self.tabWidget.setGeometry(QtCore.QRect(0, 0, 811, 721))
font = QtGui.QFont()
font.setFamily("Arial")
font.setPointSize(12)
self.tabWidget.setFont(font)
self.tabWidget.setObjectName("tabWidget")
self.tab = QtWidgets.QWidget()
self.tab.setObjectName("tab")
self.label = QtWidgets.QLabel(self.tab)
self.label.setGeometry(QtCore.QRect(0, 0, 731, 651))
self.label.setText("")
self.label.setPixmap(QtGui.QPixmap("../../Desktop/zzzzz.JPG"))
self.label.setObjectName("label")
self.tabWidget.addTab(self.tab, "")
self.tab_2 = QtWidgets.QWidget()
self.tab_2.setObjectName("tab_2")
self.label_2 = QtWidgets.QLabel(self.tab_2)
self.label_2.setGeometry(QtCore.QRect(20, 30, 91, 16))
self.label_2.setObjectName("label_2")
self.label_3 = QtWidgets.QLabel(self.tab_2)
self.label_3.setGeometry(QtCore.QRect(280, 20, 56, 31))
self.label_3.setObjectName("label_3")
self.label_4 = QtWidgets.QLabel(self.tab_2)
self.label_4.setGeometry(QtCore.QRect(470, 20, 81, 31))
self.label_4.setObjectName("label_4")
self.UserID = QtWidgets.QTextEdit(self.tab_2)
self.UserID.setGeometry(QtCore.QRect(120, 20, 104, 31))
self.UserID.setObjectName("UserID")
self.HOSTIp = QtWidgets.QTextEdit(self.tab_2)
self.HOSTIp.setGeometry(QtCore.QRect(560, 20, 131, 31))
self.HOSTIp.setObjectName("HOSTIp")
self.PWDText = QtWidgets.QLineEdit(self.tab_2)
self.PWDText.setGeometry(QtCore.QRect(330, 20, 113, 31))
self.PWDText.setText("")
self.PWDText.setEchoMode(QtWidgets.QLineEdit.Password)
self.PWDText.setObjectName("PWDText")
self.Contents = QtWidgets.QPlainTextEdit(self.tab_2)
self.Contents.setGeometry(QtCore.QRect(10, 60, 701, 581))
self.Contents.setObjectName("Contents")
self.RouterBtn = QtWidgets.QPushButton(self.tab_2)
self.RouterBtn.setGeometry(QtCore.QRect(590, 650, 91, 23))
self.RouterBtn.setObjectName("RouterBtn")
# 추가
self.RouterBtn.clicked.connect(self.RouterConfig)
self.tabWidget.addTab(self.tab_2, "")
MainWindow.setCentralWidget(self.centralwidget)
self.menubar = QtWidgets.QMenuBar(MainWindow)
self.menubar.setGeometry(QtCore.QRect(0, 0, 733, 21))
self.menubar.setObjectName("menubar")
MainWindow.setMenuBar(self.menubar)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
self.tabWidget.setCurrentIndex(1)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab), _translate("MainWindow", "초기화면"))
self.label_2.setText(_translate("MainWindow", "사용자 이름"))
self.label_3.setText(_translate("MainWindow", "암 호"))
self.label_4.setText(_translate("MainWindow", "ip address"))
self.RouterBtn.setText(_translate("MainWindow", "설정"))
self.tabWidget.setTabText(self.tabWidget.indexOf(self.tab_2), _translate("MainWindow", "라우터설정"))
def RouterConfig(self):
print("RouterConfig")
import telnetlib
print('HOST IP : ', self.HOSTIp.toPlainText()) # designer에 있는 HOSTIp를 출력
print('사 용 자 : ', self.UserID.toPlainText()) # designer에 있는 UserID를 출력
print('암 호 : ', self.PWDText.text()) # designer에 있는 PWDText를 출력
HOST = self.HOSTIp.toPlainText()
password = self.PWDText.text()
user = self.UserID.toPlainText()
# 'telnetlib' 모듈에 있는 'telnet' 함수에 HOST 인자를 넣고, 그 값을 변수에 저장
tn = telnetlib.Telnet(HOST)
# username 입력 정보를 기다림
tn.read_until(b'Username: ')
# user를 아스키코드로 인코드하여, 텔넷 가상 터미널로 보냄
tn.write(user.encode('ascii') + b'\n')
if password:
tn.read_until(b'Password: ')
tn.write(password.encode('ascii') + b'\n')
# 입력 값을 보냄
tn.write(b'enable\n')
tn.write(b'cisco\n')
tn.write(b'conf t\n')
# Contents의 type이 str이기 때문에 \n으로 문자열을 장비 적용 코드에 맞게 변환
wk_Contents = self.Contents.toPlainText()
w_txt = wk_Contents.split('\n')
print(w_txt)
for data in w_txt:
tn.write(data.encode('ascii') + b'\n')
tn.write(b'end\n')
tn.write(b'exit\n')
# 세션(write)에 실행된 모든 명령어를 보여주고, 아스키 코드로 디코드하여 사용자 화면에 출력
print(tn.read_all().decode('ascii'))
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
MainWindow = QtWidgets.QMainWindow()
ui = Ui_MainWindow()
ui.setupUi(MainWindow)
MainWindow.show()
sys.exit(app.exec_())
- 중간 박스에 라우터 및 스위치 등의 설정을 작성하고, 하단에 설정 클릭하면 적용
- 결과
적용 된 것을 확인
'네트워크 > 자동화' 카테고리의 다른 글
python - telnet 자동화 (0) | 2024.02.20 |
---|