если просто автоматизация ввода логина пароля, то все делаеться на раз-два-три
либо используеться сторонний РДП клиент типа RDP Plus, который понимает в аргументах командной строки лоигн-пароль, либо через последовательный запуск через subprocess, win32api.ShellExecute или win32process.CreateProcess
cmdkey /generic:“server name or IP” /user:“username” /pass:“passwd”
mstsc /v:“server name or IP”
cmdkey /delete:“server name or IP”
если надо чтото посылать в уже работающую RDP сесию то это умеет AutoIT( может еще кто, наверняка, но я не искал)
для работы с AutoIT есть такая обертка
https://pypi.python.org/pypi/PyAutoIt/0.3 но я ее не пробовал, так как она только для второй ветки
Также нашел PyAutoItPy
https://github.com/AhonVashibaka/PyAutoItPyпо сути тоже обертка для работы с AutoItX3.dll
Нижеприведенный код ищет окно с активным РДП сеансом по имени заголовка окна, деает его активным, запускает cmd.exe и в нем выводит таблицу маршрутизации коммандой route print.
import time
from os import system
from PyAutoItPy import AutoItX, WinHandle
def main():
Automat=AutoItX()
#Ищем окно РДП сеанса по заголовку
Title='[TITLE:192.168.16.225 - Подключение к удаленному рабочему столу]'
"""
Специальное установки могут быть использованы в качестве параметра title в функциях работы с окнами.
Эти установки могут быть использованы, чтобы отличить окна по следующим свойствам:
TITLE - Заголовок окна
CLASS - Внутреннее название класса окна
REGEXPTITLE -Заголовок окна (с использованием регулярных выражений, если регулярное выражение составлено неверно, значение @error будет установлено равным 2)
REGEXPCLASS - Название класса окна (с использованием регулярных выражений, если регулярное выражение составлено неверно, значение @error будет установлено равным 2)
.......
(с) Из офф справки по AUtoit https://autoit-script.ru/autoit3_docs/intro/windowsadvanced.htm
"""
Handle=WinHandle(Automat.WinGetHandle(Title))
if Handle == '[HANDLE:0x00000000]':
print('Невозможно получить Handle', Title)
exit(-1)
Automat.WinActivate(Handle) # делаем окно активным
Automat.Send('{LWIN}')
time.sleep(1) # задерки нужны изза времени реакции ОС на нажатия клавиш
Automat.Send('{UP}')
Automat.Send('{UP}')
Automat.Send('{UP}')
Automat.Send('{ENTER}')
time.sleep(1)
Automat.Send('cmd')
Automat.Send('{ENTER}')
time.sleep(1)
Automat.Send('route print')
Automat.Send('{ENTER}')
if __name__ == '__main__':
main()
естественно вы должны понимать что АутоИт не сможет заглянуть за окно РДП сенса. Тоесть вы не сможете получить хендл окна в РДП сеансе.