0

我已经做 python 大约 3 周了,所以对它非常陌生。不要用我的代码来评判我!:)

我制作了一个应用程序,只需单击一个按钮即可执行基本的网络操作功能,任务如下:禁用/启用接口禁用/启用接口安全性显示接口 Vlan/状态数据库,具有基于计算机名称的自动查找的交换机。

但是,我需要的最后一件事是能够检查交换机上的日志文件,然后每隔几秒钟运行一次更新,以获取最后几个条目。这用于在用户拔出连接然后重新插入时通过监视接口的启动/关闭状态来查找用户。

我已经获得了提取文​​件的代码,将其分割成一个列表,然后编辑列表以显示最后 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 切换开/关并让它每隔几秒钟运行一次,这样它就可以显示几乎实时地从开关上拉下的日志上出现的向上/向下消息给予或花费几秒钟。

目前我的代码在 def 运行期间被锁定。我正在寻找的是某种子流程?我可以将其推送到主循环不受其运行的影响吗?所以我可以有“当按钮 x 为真时:(执行该功能)而不是阻止 GUI 工作。

我的技能/知识已经到了尽头,我似乎无法在 Google 上看到一个好的答案!也许我只是不知道该怎么称呼修复!

任何帮助都会很棒!

瑞安

4

1 回答 1

1

资产管理公司,

感谢您为我指明正确的方向!线程是我缺少的一点!

因此,经过更多的谷歌搜索和挠头后,我找到了正确的例子。

import time
import threading

def threadingFunc():
    t1 = threading.Thread(target=theFunctionToRun)
    t1.start()

def theFunchtionToRun():
    #do stuff here#

checkbox that calls the function threadingFunc

这样就成功了,现在我的 GUI 仍然存在,我的“监控界面日志”等效工作就像一个魅力!

谢谢!

瑞安

于 2020-09-02T14:45:01.100 回答