psexec – Выполняет команды на удалённом хосте Windows на основе модели PsExec
Новая версия с 2.6.
Описание
- Выполняет удалённую команду с хоста Linux на хост Windows без настройки WinRM.
- Может использоваться на контроллере Ansible для подготовки хостов Windows к WinRM.
Требования
Ниже перечислены требования, необходимые на хосте, выполняющем этот модуль.
- pypsexec
- smbprotocol[kerberos] для необязательной аутентификации Kerberos
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| arguments строка | Любые аргументы, как единая строка, используемые при запуске исполняемого файла. | |
| asynchronous булево |
| Выполнит команду как отдельный процесс, и модуль вернётся сразу после запуска процесса, в то время как процесс будет продолжать выполняться в фоновом режиме. Значения stdout и stderr будут равны null, когда это значение установлено в yes.Опция stdin не работает с этим типом процесса. Значение возврата rc не устанавливается, когда это значение yes
|
| connection_password строка | Пароль для connection_user. Требуется, если не установлены требования Kerberos или имя пользователя является локальной учётной записью на хосте Windows. Можно опустить, чтобы использовать билет Kerberos для принципала, заданного connection_user, если установлена библиотека Kerberos и билет уже был получен с помощью kinit команды ранее. | |
| connection_timeout целое число | Значение по умолчанию: 60 | Тайм-аут в секундах ожидания при получении начального ответа SMB negotiate от сервера. |
| connection_username строка | Имя пользователя для подключения к удалённому хосту Windows. Этот пользователь должен быть членом группы Administrators на хосте Windows.Требуется, если не установлены требования Kerberos или имя пользователя является локальной учётной записью на хосте Windows. Можно опустить, чтобы использовать билет Kerberos по умолчанию в кэше локальных учетных данных, если установлена библиотека Kerberos. Если process_username не указан, удалённый процесс будет выполняться под учётной записью Network Logon под этой учётной записью. | |
| encrypt булево |
| Использует шифрование SMB для шифрования сообщений SMB, отправляемых на хост и с него. Это требует протокола SMB 3, который поддерживается только с Windows Server 2012 или Windows 8. Более старые версии, такие как Windows 7 или Windows Server 2008 (R2), должны установить это значение в no и использовать без шифрования.При установке значения no, пакеты находятся в открытом виде и могут быть видны всем, кто прослушивает сеть. В эти пакеты включены все параметры процесса. |
| executable строка / обязательно | Исполняемый файл для запуска на хосте Windows. | |
| hostname строка / обязательно | Удалённый хост Windows для подключения. Может быть IP-адресом или именем хоста. | |
| integrity_level строка |
| Уровень целостности процесса, когда process_username определён и не равен System.При default, используется уровень целостности по умолчанию, основанный на настройке системы.При elevated, команда будет запущена с правами администратора.При limited, команда будет принудительно запущена без прав администратора. |
| interactive булево |
| Выполнит процесс как интерактивный процесс, который отображает окно процесса сессии Windows, указанной в interactive_session. Значения stdout и stderr будут null, когда это значение установлено в yes.Опция stdin не работает с этим типом процесса. |
| interactive_session целое число | Значение по умолчанию: 0 | Идентификатор сессии Windows, используемый при отображении интерактивного процесса на удалённом хосте Windows. Это значение актуально только при interactive равном yes.Значение по умолчанию — 0, что соответствует консольной сессии хоста Windows. |
| load_profile булево |
| Запускает удалённую команду с загруженным профилем пользователя. |
| port целое число | Значение по умолчанию: 445 | Порт, на котором прослушивает удалённая служба SMB. |
| priority строка |
| Устанавливает приоритет команды на хосте Windows. См. https://msdn.microsoft.com/en-us/library/windows/desktop/ms683211.aspx для получения более подробной информации. |
| process_password строка | Пароль для process_username. Требуется, если process_username определён и не равен System. | |
| process_timeout целое число | Значение по умолчанию: 0 | Тайм-аут в секундах, устанавливаемый для выполняемого процесса. Значение 0 означает отсутствие тайм-аута. |
| process_username строка | Пользователь, от имени которого выполняется процесс. Это позволяет запустить процесс под интерактивным логином указанной учётной записи, что обходит ограничения, связанные с использованием Network logon, когда это не указано. Если опущено, процесс запускается под той же учётной записью, что и connection_username, с помощью Network logon. Установите значение System для запуска как встроенной учётной записи SYSTEM, пароль для этой учётной записи не требуется.Если encrypt равно no, имя пользователя и пароль передаются как простая строка XOR-зашифрованных байтов, которая не шифруется. Для получения имени пользователя и пароля не требуются никакие специальные инструменты, а только знание протокола. | |
| show_ui_on_logon_screen булево |
| Отображает интерфейс процесса на экране входа в систему (Winlogon), когда process_username равно System. |
| stdin строка | Данные, отправляемые в канал stdin после запуска процесса. Этот параметр не имеет эффекта, если interactive или asynchronous равно yes. | |
| working_directory строка | Значение по умолчанию: "C:\\Windows\\System32" | Изменяет рабочую директорию, установленную при запуске процесса. |
Примечания
Примечание
- Для работы данного модуля требуется, чтобы на хосте Windows была настроена и активирована служба SMB, а порт 445 был открыт в брандмауэре.
- Данный модуль будет ожидать завершения процесса, если параметр asynchronous не
yes, убедитесь, что процесс запущен в качестве неинтерактивной команды, чтобы избежать бесконечного ожидания ввода. - connection_username должен быть членом локальной группы администраторов хоста Windows. Для хостов, не подключённых к домену, параметр
LocalAccountTokenFilterPolicyследует установить на значение1, чтобы обеспечить корректную работу. Смотрите https://support.microsoft.com/ru-ru/help/951016/description-of-user-account-control-and-remote-restrictions-in-windows. - Дополнительную информацию об этом модуле и требованиях к хосту можно найти на странице https://github.com/jborean93/pypsexec.
См. также
См. также
- raw – Выполнение низкоуровневой и грязной команды
- Официальная документация модуля raw.
- win_command – Выполнение команды на удалённом узле Windows
- Официальная документация модуля win_command.
- win_psexec – Запуск команд (удаленно) от имени другого (привилегированного) пользователя
- Официальная документация модуля win_psexec.
- win_shell – Выполнение команд оболочки на целевых хостах
- Официальная документация модуля win_shell.
Примеры
- name: Run a cmd.exe command
psexec:
hostname: server
connection_username: username
connection_password: password
executable: cmd.exe
arguments: /c echo Hello World
- name: Run a PowerShell command
psexec:
hostname: server.domain.local
connection_username: username@DOMAIN.LOCAL
connection_password: password
executable: powershell.exe
arguments: Write-Host Hello World
- name: Send data through stdin
psexec:
hostname: 192.168.1.2
connection_username: username
connection_password: password
executable: powershell.exe
arguments: '-'
stdin: |
Write-Host Hello World
Write-Error Error Message
exit 0
- name: Run the process as a different user
psexec:
hostname: server
connection_user: username
connection_password: password
executable: whoami.exe
arguments: /all
process_username: anotheruser
process_password: anotherpassword
- name: Run the process asynchronously
psexec:
hostname: server
connection_username: username
connection_password: password
executable: cmd.exe
arguments: /c rmdir C:\temp
asynchronous: yes
- name: Use Kerberos authentication for the connection (requires smbprotocol[kerberos])
psexec:
hostname: host.domain.local
connection_username: user@DOMAIN.LOCAL
executable: C:\some\path\to\executable.exe
arguments: /s
- name: Disable encryption to work with WIndows 7/Server 2008 (R2)
psexec:
hostanme: windows-pc
connection_username: Administrator
connection_password: Password01
encrypt: no
integrity_level: elevated
process_username: Administrator
process_password: Password01
executable: powershell.exe
arguments: (New-Object -ComObject Microsoft.Update.Session).CreateUpdateInstaller().IsBusy
- name: Download and run ConfigureRemotingForAnsible.ps1 to setup WinRM
psexec:
hostname: '{{ hostvars[inventory_hostname]["ansible_host"] | default(inventory_hostname) }}'
connection_username: '{{ ansible_user }}'
connection_password: '{{ ansible_password }}'
encrypt: yes
executable: powershell.exe
arguments: '-'
stdin: |
$ErrorActionPreference = "Stop"
$sec_protocols = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::SystemDefault
$sec_protocols = $sec_protocols -bor [Net.SecurityProtocolType]::Tls12
[Net.ServicePointManager]::SecurityProtocol = $sec_protocols
$url = "https://github.com/ansible/ansible/raw/devel/examples/scripts/ConfigureRemotingForAnsible.ps1"
Invoke-Expression ((New-Object Net.WebClient).DownloadString($url))
exit
delegate_to: localhost
Возвращаемые значения
Общие возвращаемые значения описаны здесь, следующие поля уникальны для данного модуля:
| Ключ | Возвращаемое значение | Описание |
|---|---|---|
| msg строка | модуль завершился ошибкой | Любые детали исключения при попытке запуска процесса Пример: Получено исключение от удаленной службы PAExec: Не удалось запустить "invalid.exe". Система не может найти указанный файл. [Err=0x2, 2] |
| pid целое число | успех и asynchronous = 'да' | Идентификатор процесса асинхронного процесса, который был создан Пример: 719 |
| rc целое число | успех и asynchronous = 'нет' | Код возврата удалённого процесса |
| stderr строка | успех и интерактивный или asynchronous = 'нет' | Вывод stderr удалённого процесса Пример: Ошибка [10] при запуске процесса |
| stdout строка | успех и интерактивный или asynchronous = 'нет' | Вывод stdout удалённого процесса Пример: Привет мир |
Статус
- Для этого модуля не гарантируется обратная совместимость интерфейса. [превью]
- Этот модуль поддерживается сообществом Ansible. [сообщество]
Авторы
- Jordan Borean (@jborean93)
Подсказка
Если вы обнаружите какие-либо проблемы в этой документации, вы можете отредактировать этот документ, чтобы улучшить его.
© 2012–2018 Michael DeHaan
© 2018–2019 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/2.9/modules/psexec_module.html