簡體   English   中英

Xvfb-run 作為 Django 中的子進程運行 xfreerdp 失敗

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM