Python Popen отправить 'y', если текст в stdout - PullRequest
0 голосов
/ 16 февраля 2020

Я пытаюсь открыть xfreerdp, если сертификат не установлен. Если я пользуюсь / cert-ignore, он работает отлично. Но появится всплывающее окно с сообщением, где пользователь может решить, хочет он доверять или нет. Проблема в том, что xfreerdp отправляет данные хоста для неизвестного хоста. Теперь я отправлю сообщение пользователю, и если он доверяет серверу, 'x' должно быть отправлено на xfreerdp.

Вот мой код:

p = sp.Popen(["xfreerdp  /u:" + str(us) + " /p:" + str(ps) + " /v:" + str(ip) + " /f /monitors:" + str(curr_screen) + ""], stdout=sp.PIPE, stderr=sp.PIPE, stdin=sp.PIPE, shell=True)

            out, err = p.communicate()

            if "ERRCONNECT_LOGON_FAILURE" in str(err):
                msg = "Login failed!\nCheck Username and Passsword"
                MessageBox(msg, "error")
            elif "Certificate details for" in str(out):
                if mb.askyesno("WARNING: CERTIFICATE NAME MISMATCH!", "Do you trust the host: " + str(ip)):
                    p.communicate(input=b'y\n')
                else:
                    msg = "Connection canceld!"
                    MessageBox(msg, "error")

Как я могу отправьте 'y', чтобы xfreerdp продолжил.

Спасибо

...