Не отправляются команды с кавычками по SSH соединению Paramiko

Ситуация такая...

Есть код на Python, который подключается к серверу по SSH с оболочкой PowerShell. Использовал paramiko. Пишу код для автоматизации добавления пользователей в Active Directory.

Код на Python:

SSH = paramiko.SSHClient()
SSH.set_missing_host_key_policy(paramiko.AutoAddPolicy())
SSH.connect(hostname=HOST, username=USER, password=PASSWORD)

STDIN, STDOUT, STDERR = SSH.exec_command(COMMAND)

Если писать в SSH клиенте такую команду как:

Создать пользователя в Active Directory через PowerShell:
New-ADUser -Name "Ахмадеев Булат Наилевич" -GivenName "Булат" -Surname "Ахмадеев" -SamAccountName "AkhmadeevBN" -UserPrincipalName "[email protected]" -AccountPassword (ConvertTo-SecureString "#Y2q#K0m#V3o" -AsPlainText -Force) -Enabled $True -Initials "БН" -DisplayName "Ахмадеев Булат Наилевич" -Company "Департамент информационных технологий" -Department "Отдел системного и технического обеспечения" -Title "Системный администратор" -OfficePhone "1902" -Description "" -Path "OU=Отдел системного и технического обеспечения,OU=Департамент информационных технологий,OU=Employee,DC=WEBsite,DC=ru" -Manager "ChaginRE"

Работает нормально, пользователь в Active Directory создается.

Если передавать эту же самую команду в метод exec_command(), то выходит следующая ошибка в STDERR:

New-ADUser : Не удается найти позиционный параметр, принимающий аргумент "Булат".
строка:1 знак:1
+ New-ADUser -Name Ахмадеев Булат Наилевич -GivenName Булат -Surname Ах ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument: (:) [New-ADUser], ParameterBindingException
    + FullyQualifiedErrorId : PositionalParameterNotFound,Microsoft.ActiveDirectory.Management.Commands.NewADUser

Предполагаю, что код отправляет команду без кавычек. Как это исправить???

Кто работал на paramiko? Есть ли свои нюансы как метод exec_command() отправляет команду по SSH?

Также добавлю. Если создавать в SSH клиенте переменную: $pwd = 123 Все работает.

Но если отправлять эту же команду через exec_command(), то код приостанавливается, из-за того, что после знака = ничего не видит. И SSH подключение просит ввести значение для переменной $pwd.


Ответы (1 шт):

Автор решения: Bulat_Akhmadeev

Я не знаю почему это так работает, но проблему я решил тем, что внутри команды я использовал не такой вид: Command = 'Команда "его аргумент"', а такой: Command = 'Команда """его аргумент"""'

→ Ссылка