【问题标题】:Catching stdout from win32com?从 win32com 捕获标准输出?
【发布时间】:2014-03-13 22:39:41
【问题描述】:

我正在尝试在 lotus notes 上运行一些任务,但是当访问一个密码错误的条目时,它阻止了我在我的轨道上。我在论坛上搜索了线索并阅读了subprocess,但无法让它适用于我的案例?我怎么能这样做?

        try:
            print "session"+str(count)
            print count
            print task
            print "session["+str(count-1)+"].Initialize()"
            session[count-1].Initialize()
            reg = session[count-1].createRegistration()
            reg.switchToID(os.path.join(IDPATH,task[1]),task[2])

        except Exception as inst:
            print type(inst)
            print inst.args
            if type(inst) == TypeError:

                x, y ,u , i = inst.args
                #print 'x = ', x
                #print 'y = ', y
                #print 'u = ', u
                #print 'i = ', i
                logfile.write(task[0]+"\t"+task[1]+"\t"+task[2]+"\tNA\t"+u[2]+"\n")
                continue

id 文件的密码与 id 文件匹配,一切正常,一旦我用错误的密码输入密码。

有密码

session[1].Initialize()
[0734:0007-2CF0] The ID file being used is: CN=Test User1/O=company
[0734:0007-2CF0] Enter password (press the Esc key to abort): 

我希望我能找到一种方法来解析这个错误并发送一个 esc 以继续下一个。

【问题讨论】:

  • 异常会触发吗?或不?如果您在 reg.switchToID 之后添加一个打印语句,您会在它告诉您密码错误或其他什么之前看到打印语句吗?
  • 异常似乎没有被捕获,在 switchToID 之后添加了一个打印,不打印。提示输入该 ID 文件的正确密码并停留。

标签: python com lotus-notes


【解决方案1】:

Lotus Notes 通常不允许调用程序拦截此密码提示。这是针对尝试蛮力攻击的脚本的安全对策。我知道解决此问题的唯一方法是使用Lotus Notes C API 的扩展管理器功能,该功能涉及构建一个 DLL 来处理 EM_GETPASSWORD 事件,并将一个条目插入到 notes.ini 文件中,以便 Notes 加载此 DLL当它运行时。

【讨论】:

  • 啊,这样就可以了。我希望我可以将它包装在一个子进程中,并在没有 0 返回的超时时间后关闭它,然后继续进行下一个测试。我猜是一厢情愿的想法。
猜你喜欢
  • 1970-01-01
  • 2017-07-09
  • 2021-05-21
  • 2011-07-05
  • 2013-08-07
  • 1970-01-01
  • 1970-01-01
  • 2018-05-15
相关资源
最近更新 更多