Переменная Python и скобки

#python

#python

Вопрос:

У меня есть некоторый код на языке Lambda, и я хочу защитить пароль переменными среды Lambda.

Теперь код выглядит следующим образом:

 command = ssm_client.send_command( 
InstanceIds=[InstanceId], 
DocumentName='AWS-RunPowerShellScript', 
Parameters={ 
  "commands":[" 
    $pass = ConvertTo-SecureString superPassword123 -AsPlainText -Force; 
    $creds = New-Object System.Management.Automation.PSCredential -ArgumentList kagarlickijAdmin,$pass; 
    Remove-Computer -ComputerName $(hostname) -Credential $creds -Verbose -Restart -Force 
"]} )`
  

Как я могу заменить superPassword123 на os.environ['DomainPassword'] с учетом всех этих скобок?

Комментарии:

1. Где бы вы переключились на ‘DomainPassword’. Это $pass в -ArgumentList ? Извините, я не знаю, достаточно ли у меня контекста для того, что вы делаете / PowerShell.

2. Мне нужно заменить superPassword123 на os.environ['DomainPassword']

Ответ №1:

Вы можете передать пароль (или любую другую жестко закодированную подстроку в python с форматированием строки:

 "commands":[" 
    $pass = ConvertTo-SecureString {pw} -AsPlainText -Force; 
    $creds = New-Object System.Management.Automation.PSCredential -ArgumentList kagarlickijAdmin,$pass; 
    Remove-Computer -ComputerName $(hostname) -Credential $creds -Verbose -Restart -Force 
".format(pw = os.environ['DomainPassword'])
  

Комментарии:

1. Это приведет к отображению вашего пароля в командной оболочке, но если он все равно доступен в вашей среде, в большинстве случаев это не будет иметь значения.

2. Вы имеете в виду, что это переменная в скрипте PowerShell? Я думал, что это переменная среды. Как вы используете Python здесь?

3. да, я отправляю команду PowerShell экземпляру Windows с помощью AWS SSM. Мне нужен Python, потому что Lambda не поддерживает PowerShell (ядро PowerShell поддерживается, но оно не поддерживает работу с ActiveDirectory). И я использую Lambda как действие правила событий CloudWatch. Цель состоит в том, чтобы удалить сервер из домена, когда он завершается ASG.

4. Вы пробовали мой код? Это должно сработать при условии: 1) python может получить доступ к паролю из вашей среды и 2) python запускает PowerShell, поэтому он может жестко кодировать пароль (переменная не требуется). Если вы хотите, вы можете добавить команду в PowerShell для сохранения пароля для дальнейшего использования.

5. Или вы хотите сказать, что ваш пароль сгенерирован в PowerShell? Следовательно, $pass = ConvertTo-SecureString superPassword123 -AsPlainText -Force . В этом случае вы можете захотеть добавить команду Powershell, чтобы записать ее в переменную среды или даже в текстовый файл (если вы все равно уничтожаете компьютер).