启动远程桌面连接后,WebApp无响应

时间:2016-06-07 22:34:04

标签: python python-2.7 rdp

创建批处理文件并调用mstc执行远程桌面连接后,我变得没有响应。我原以为这是一个独立的过程,并不以任何方式依赖我的python scrypt。

import os


def rdp_session(server, user, temporary_pass):
    """create Batch file to create .bat file that initiates rdp with variables"""
    rdp = open("rdp_test.bat", "w")
    rdp.write("cmdkey /generic:TERMSRV/"+server+" /user:"+user+" /pass:"+temporary_pass+"\n")
    rdp.write("mstsc /v:"+server+" /admin")
    rdp.close()
    os.system("rdp_test.bat")
    #os.remove("rdp_test.bat") optional, to delete file with creds after executing

我也尝试过使用:

subprocess.call("rdp_test.bat")
subprocess.Popen(["rdp_test.bat"])   #doesnt initiate my rdp

我得到了相同的结果。

为什么会发生这种情况,我可以做些什么,以便在我的RDP运行时保持响应?

要添加一些上下文,我在Flask应用程序中有这个功能,我用它来远程连接到不同的机器。当1 rdp时,Web应用程序不响应任何命令,当我终止我的rdp时,我点击的所有内容都会突然执行。

2 个答案:

答案 0 :(得分:0)

为了让你的会话继续,你需要产生另一个进程,独立于在执行你的脚本后立即终止的进程。

答案 1 :(得分:0)

在阅读了一些有关子进程的内容之后,我发现这些选项都没有立即生效,因为我不仅需要使用Popen运行子进程,还需要使用Pathname expansion

我最终做了:

subprocess.Popen([os.path.expanduser("My_File.bat")])
  

expanduser将展开使用〜来表示当前的路径名   用户的主目录。这适用于用户拥有的任何平台   主目录,如Windows,UNIX和Mac OS X;它没有影响   Mac OS。

否则我的应用程序会在关闭rdp会话后运行所有后续命令。这允许我独立于我的Web应用程序运行多个子流程,并允许它同时响应