2016-06-07 10 views
0

Mein reagiert nicht mehr, nachdem eine Stapeldatei erstellt und mstc zum Ausführen einer Remotedesktopverbindung aufgerufen wurde. Ich hätte gedacht, dass dies ein unabhängiger Prozess ist und in keiner Weise auf meinen Python Scrypt angewiesen ist.WebApp reagiert nicht mehr nach dem Initiieren der Remotedesktopverbindung

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 

Ich habe auch versucht mit:

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

ich das gleiche Ergebnis zu erhalten.

Warum passiert das und was kann ich tun, damit mein Responsive während meines RDP läuft?

Um ein wenig Kontext hinzuzufügen, habe ich diese Funktion in einer Flask-App, die ich zur Remote-Verbindung zu verschiedenen Maschinen verwenden. Wenn 1 RDP, die Web-App reagiert nicht auf Befehle, und wenn ich meine RDP beenden, wird alles, was ich klickte plötzlich ausgeführt.

+0

spawn einen anderen Prozess? – limbo

+1

Ich sehe, lese ... https: //docs.python.org/2/library/subprocess.html – glls

Antwort

0

Nach ein bisschen auf Subprozesse zu lesen, habe ich es geschafft, dass keine dieser Optionen finden sofort wirksam waren, da ich brauchte, um nicht nur einen Teilprozess mit Popen laufen, sondern zusätzlich Pathname expansion

aus dem ich zu tun am Ende zu verwenden, erforderlich:

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

expanduser einen Pfad erweitern, die ~ verwendet die aktuellen Benutzer-Home-Verzeichnis zu repräsentieren. Dies funktioniert auf jeder Plattform, auf der Benutzer ein Home-Verzeichnis haben, wie Windows, UNIX und Mac OS X; Es hat keine Auswirkungen auf Mac OS.

Sonst würde meine App alle folgenden Befehle nach dem Schließen meiner RDP-Sitzung ausführen. Dadurch kann ich mehrere Subprozesse unabhängig von meiner Web-App ausführen und gleichzeitig reagieren lassen.

0

Damit Ihre Sitzung fortgesetzt werden kann, müssen Sie einen anderen Prozess starten, unabhängig von dem, der unmittelbar nach dem Ausführen des Skripts beendet wird.

Verwandte Themen