背景:为了得到练习我正在编写一个应用程序的工作,将允许服务台用户grep |不需要他们执行SSH /终端工作的尾部日志。这些用户在Windows机器上运行,否则我会使用子进程。某些服务器使用系统帐户(并且这些服务器已预先填充到脚本中),但其他服务器则需要用户输入凭据。tkinter gui冻结时功能失败
当脚本(详情如下)运行并且用户错误地输入他们的凭证后,应用程序在抛出'没有处理程序可以被发现用于记录器'paramiko.transport''错误后挂起。当用户选择一个没有预填充凭证的选项时,系统会提示您输入用户名和密码。证书被附加到适当的列表中,弹出窗口被销毁并且日志检查功能被调用。当抛出错误时,可能会导致窗口挂起,以及处理此类问题的最佳方法是什么?
我试图添加logging.basicConfig(),但应用程序仍然挂起。
完整的脚本:http://pastebin.com/TUvs92yN
当用户第一次点击提交按钮调用如下:如果在列表中找到该主机名
lambda: credentials() if hosts[log.get()][0] in needs_pass else log_check()
然后出现凭据框。在用户输入用户名和密码后,调用submit_cred()函数:
def submit_cred():
if len(hosts[log.get()]) < 3:
hosts[log.get()].append(username_prompt.get())
hosts[log.get()].append(password_prompt.get())
prompt.destroy()
log_check()
这是麻烦开始的地方。如果凭据正确,则应用程序按预期显示结果,但如果在窗口销毁后调用log_check(),则会收到错误并挂起应用程序。我试图在log_check()中处理认证问题,但在这一点上它似乎没有足够的重要。