通过wmi进行远程连接与多线程无法正常工作

时间:2013-11-26 12:02:14

标签: multithreading python-2.7 wmi

我正在尝试使用wmi模块连接到远程Windows机器。我正在使用基于此链接中的代码的逻辑 - http://code.activestate.com/recipes/577945-execute-remote-commands-on-windows-like-psexec/

当我单独运行此代码并尝试连接到我能够连接的机器时,但是,当我在多线程环境中运行代码时,我收到以下错误之一案例,但在另一个线程中,我能够成功连接。

这是错误 -

2013-11-26 17:26:47,270::Thread-5::6544::Could not connect to machine - <x_wmi: Unexpected COM Error (-2147352567,
'Exception occurred.', (0, u'SWbemLocator',
u'Access is denied. ', None, 0, -2147024891), None)>

这是我的代码

class ConnectMsToMs():
    '''    This class provide the functionality to transfer 
           file b/w windows OS. One can also delete/execute 
           any file on remote computer. '''

    def __init__(self, log, ip,
                 username, password,remote_path=r'c:\\test_script'):
        self.log = log
        self.ip = str(ip)
        self.username = str(username)
        self.password = str(password)
        self.remote_path = remote_path

        try:
            pythoncom.CoInitialize()
            self.log.thread_log("Establishing connection to %s" % self.ip)
            self.connection = wmi.WMI(self.ip, user=self.username,
                                      password=self.password)
            self.log.thread_log("Connection established")
        #except wmi.x_wmi:
        except Exception,err:
            self.log.thread_log("Could not connect to machine - %s"%str(err))
            raise

这是我连接到ConnectMsToMs对象的结构。

main() - &gt; DTC {继承调用run的线程。} - &gt; dba.sanity(){这是一个不同类的函数,这个fn实习生调用connnect} - &gt; connect(){this fn创建我的ConnectMsToMs的对象并尝试连接到系统}

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,到目前为止还没有找到有关如何解决问题的任何信息。

我已经使用Windows程序“远程桌面”成功连接到计算机,因此我知道该服务处于活动状态并接受来自此计算机的连接。

我正在尝试使用以下行进行测试

connection = wmi.WMI("192.168.1.5", user="username", password="password")

结果是

x_access_denied: <x_wmi: Unexpected COM Error (-2147352567, 'Exception occurred.', (0, u'SWbemLocator', u'Access is denied. ', None, 0, -2147024891), None)>