Не отправляются команды с кавычками по 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 шт):
Я не знаю почему это так работает, но проблему я решил тем, что внутри команды я использовал не такой вид: Command = 'Команда "его аргумент"', а такой: Command = 'Команда """его аргумент"""'