Я занимаюсь питоном около 3 недель, так что он очень новичок. Не судите меня по моему коду! :)
Я сделал приложение, позволяющее выполнять основные функции сетевых операций одним нажатием кнопки, такие задачи, как: Отключение/включение интерфейса Отключение/включение безопасности интерфейса Показать интерфейс База данных Vlan/Status коммутаторов с автоматическим поиском на основе имени компьютера.
Однако последнее, что мне нужно, — это иметь возможность проверять файл журнала на коммутаторе, а затем каждые несколько секунд запускать обновление, чтобы получить последние несколько записей. Это используется для поиска пользователя, отслеживая состояние интерфейса на наличие / отключение, когда они отключают свое соединение, а затем снова подключают его.
У меня есть код для извлечения файла, вырезанного из него в список, а затем отредактируйте список, чтобы отобразить последние 10 записей: для взаимодействия с коммутатором используется библиотека Junos-EZNC:
def monitorInterface():
username = usernameEntry.get() # Get username from entrybox in mainWindow
password1 = passwordEntry.get() # Get password from entrybox in mainWindow
hostIP = SwitchIPEntry.get() # Get switch IP from entrybox in mainWindow
switchPort = SwitchPortEntry.get() # Get switchport from entrybox in mainWindow
count = 0
with Device(host=hostIP, user=username, password=password1) as dev: # Logon bits
dev.open() # Open connection
while count < 10:
logReturn = dev.rpc.get_log(filename='messages') # Grab file
logReturn1 = etree.tostring(logReturn, encoding='unicode', pretty_print=True) # convert file to readable
logReturn2 = logReturn1.split('\n') # Split file in to list based on new line
logReturn3 = logReturn2[-10:] # read last 10 results of the list
TextBoxData.insert(INSERT, logReturn3) # Print List of 10 in textbox
dev.close()
Проблема, с которой я сталкиваюсь, заключается в том, что я хочу, чтобы это определение включалось/выключалось и запускалось каждые несколько секунд, чтобы оно могло отображать сообщение вверх/вниз, которое появляется в журнале, который отключается от коммутатора почти в режиме реального времени. дайте или возьмите несколько секунд.
На данный момент мой код блокируется во время выполнения def. Я ищу какие-то подпроцессы? Я могу нажать это, чтобы основной цикл не влиял на его работу? Так что я могу иметь, пока кнопка x верна: (выполнить функцию) и не останавливать работу графического интерфейса.
У меня заканчиваются мои навыки/знания, и я не могу найти хороший ответ в Google! может быть, я просто не знаю, как назвать исправление!
Любая помощь будет здорово!
Райан
while count < 10:
— это бесконечный цикл, поскольку внутри цикла ничего не меняетсяcount
. - person jasonharper   schedule 02.09.2020