背景:为了练习,我正在编写一个工作应用程序,允许帮助台用户 grep | 尾日志,而不需要他们执行 SSH/终端工作。这些用户在 Windows 机器上运行,否则我会使用子进程。一些服务器使用系统帐户(这些是预先填充到脚本中的),但其他服务器需要用户输入凭据。
当脚本(详情如下)运行并且用户错误地输入他们的凭据时,应用程序在抛出“No handlers could be found for logger "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() 中处理身份验证问题,但在这一点上,它似乎还不够重要。