2016-06-07 10 views
0

После того, как вы создали командный файл и вызвали mstc, вы можете отключить его. Я бы подумал, что это независимый процесс и никоим образом не полагается на мой скрипт python.WebApp перестает отвечать на запросы после подключения к удаленному рабочему столу

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, веб-приложение не отвечает ни на какие команды, и когда я завершаю свой rdp, все, что я нажал, внезапно выполняется.

+0

порождает другой процесс? – limbo

+1

Я вижу, читаю ... https: //docs.python.org/2/library/subprocess.html – glls

ответ

0

После прочтения немного на подпроцессы, мне удалось найти, что ни один из этих вариантов не было в силу немедленно, так как мне нужно было не только запустить подпроцесс с Popen, но дополнительно необходимо использовать Pathname expansion

, от которого я в конечном итоге делает:

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

expanduser расширит путь к файлу, который использует ~ представлять домашний каталог текущего пользователя. Это работает на любой платформе, где у пользователей есть домашний каталог , такой как Windows, UNIX и Mac OS X; он не влияет на Mac OS.

В противном случае мое приложение будет запускать все последующие команды после закрытия моей сессии rdp. Это позволяет мне запускать несколько подпроцессов независимо от моего веб-приложения и позволяет ему реагировать одновременно

0

Для продолжения сеанса вам необходимо создать другой процесс, независимо от того, который завершится сразу после выполнения вашего скрипта.