[英]Xvfb-run as a subprocess in Django running xfreerdp fails
我在 Dockerized Django 應用程序的視圖方法中有一個ThreadPoolExecutor
對象( rdp_connector_global
),通過提交調用以下方法( _rdp_connect
),如下所示:
rdp_connector_global.submit(_rdp_connect, login.ip_address, login.remote_port, login.username, login.password, login.rdp_width_pixels, login.rdp_height_pixels)
def _rdp_connect(hostname_or_ip, port, username, password, rdp_width_pixels=1920, rdp_height_pixels=1080):
domain = None
username_simple = username
if "\\" in username:
split = username.split["\\"]
domain = split[0]
username_simple = split[1]
elif "@" in username:
split = username.split["@"]
username_simple = split[0]
domain = split[1]
connection = None
if domain is None:
xvfb_args_str = "/usr/bin/xvfb-run /usr/bin/xfreerdp /sec:tls /u:{0} /p:{1} /w:{2} /h:{3} /v:{4}:{5} /cert-ignore".format(username_simple, password, rdp_width_pixels, rdp_height_pixels, hostname_or_ip, port)
connection = subprocess.Popen(xvfb_args_str, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
else:
xvfb_args_str = "/usr/bin/xvfb-run /usr/bin/xfreerdp /sec:tls /d:{0} /u:{1} /p:{2} /w:{3} /h:{4} /v:{5}:{6} /cert-ignore".format(domain, username_simple, password, rdp_width_pixels, rdp_height_pixels, hostname_or_ip, port)
connection = subprocess.Popen(xvfb_args_str, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
logging.info(connection.communicate())
connection.wait()
logging.info(connection.communicate())
Xvfb 和 freerdp 已正確安裝在 Docker 容器中。 當我從 Django shell 或 shell 內的 ZC5FD2724CDD0D2B3B3B3B3B 運行登錄命令時,登錄命令成功但是通過代碼運行時,相同的命令無法登錄到遠程 Windows 機器。 通過 Django 運行時,在等待連接到 Windows 機器失敗 30 秒后,我得到一個ERRINFO_LOGOFF_BY_USER
。
我終於解決了這個問題。 這與 freerdp 或 Docker 或 Xvfb 無關。 登錄名、密碼在使用前未解密。 因此登錄失敗。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.