psexec — Запуск команд на удалённом хосте Windows на основе модели PsExec
Новая в версии 2.6.
Описание
- Запускает удалённую команду с хоста Linux на хост Windows без настройки WinRM.
- Может использоваться на контроллере Ansible для подготовки хостов Windows к использованию WinRM.
Требования
Ниже перечислены требования к хосту, на котором выполняется этот модуль.
- pypsexec
- smbprotocol[kerberos] для необязательной аутентификации Kerberos
Параметры
| Параметр | Варианты/Значения по умолчанию | Комментарии |
|---|---|---|
| arguments str | Любые аргументы в виде одной строки для использования при запуске исполняемого файла. | |
| asynchronous bool |
| Запустит команду как отдельный процесс, и модуль вернёт результат сразу после запуска, в то время как процесс будет продолжать работу в фоновом режиме. Значения stdout и stderr будут пустыми, когда это значение установлено в yes. Параметр stdin не работает с этим типом процесса. Значение rc не устанавливается, когда это значение yes.
|
| connection_password str | Пароль для connection_user. Требуется, если не установлены требования Kerberos или имя пользователя — локальная учётная запись на хосте Windows. Можно опустить для использования билета Kerberos для принципала, заданного connection_user, если установлена библиотека Kerberos и билет уже получен с помощью команды kinit ранее. | |
| connection_timeout str | Значение по умолчанию: 60 | Время ожидания в секундах при получении начального ответа на SMB-переговоры от сервера. |
| connection_username str | Имя пользователя для подключения к удалённому хосту Windows. Этот пользователь должен быть членом группы Administrators хоста Windows.Требуется, если не установлены требования Kerberos или имя пользователя — локальная учётная запись на хосте Windows. Можно опустить для использования билета Kerberos по умолчанию в кэше локальных учетных данных, если установлена библиотека Kerberos. Если process_username не указан, то удалённый процесс будет выполняться под сетевой учётной записью данного пользователя. | |
| encrypt bool |
| Использует шифрование SMB для шифрования сообщений SMB, отправляемых на хост и с хоста. Это требует протокола SMB 3, который поддерживается только Windows Server 2012 или Windows 8. Более старые версии, такие как Windows 7 или Windows Server 2008 (R2), должны установить это значение в no и не использовать шифрование.При установке в no, пакеты передаются в открытом виде и их может просмотреть любой, прослушивающий сеть. В этом случае включаются все параметры процесса. |
| executable str обязательно | Исполняемый файл для запуска на хосте Windows. | |
| hostname str обязательно | Удалённый хост Windows для подключения. Может быть IP-адресом или именем хоста. | |
| integrity_level str |
| Уровень целостности процесса, когда process_username определён и не равен System. В default, используется уровень целостности по умолчанию, основанный на настройках системы.В elevated, команда выполняется с правами администратора.В limited, команда будет принудительно выполнена без прав администратора. |
| interactive bool |
| Запустит процесс как интерактивный процесс, который покажет окно процесса сеанса Windows, указанного параметром interactive_session. Значения stdout и stderr будут пустыми, когда это значение установлено в yes.Параметр stdin не работает с этим типом процесса. |
| interactive_session int | Значение по умолчанию: 0 | Идентификатор сеанса Windows для отображения интерактивного процесса на удалённом хосте Windows. Действительно только при значении interactive в yes.По умолчанию 0, что соответствует консольному сеансу хоста Windows. |
| load_profile bool |
| Запускает удалённую команду с загруженным профилем пользователя. |
| port int | Значение по умолчанию: 445 | Порт, на котором прослушивает удалённая служба SMB. |
| priority str |
| Устанавливает приоритет команды на хосте Windows. См. https://msdn.microsoft.com/en-us/library/windows/desktop/ms683211.aspx для получения дополнительной информации. |
| process_password str | Пароль для process_username. Требуется, если process_username определён и не System. | |
| process_timeout int | Значение по умолчанию: 0 | Время ожидания в секундах, установленное для работающего процесса. Значение 0 означает отсутствие таймаута. |
| process_username str | Пользователь, от имени которого будет выполняться процесс. Это может быть установлено для выполнения процесса под интерактивным входом указанной учётной записи, что обходит ограничения сетевого входа, используемого при отсутствии указания. Если опущено, процесс выполняется от имени того же пользователя, что и connection_username, с помощью сетевого входа. Установка значения System выполнит процесс от имени встроенной учётной записи SYSTEM, пароль для этой учётной записи не требуется.Если encrypt установлено в no, имя пользователя и пароль передаются как простая строка XOR-ск램블된 байтов, которая не зашифрована. Для получения имени пользователя и пароля не нужны специальные инструменты, достаточно знаний протокола. | |
| show_ui_on_logon_screen bool |
| Отображает интерфейс процесса на экране входа в систему (Winlogon), когда process_username равно System. |
| stdin str | Данные для отправки в канал stdin после запуска процесса. Этот параметр не имеет эффекта, когда interactive или asynchronous установлены в yes. | |
| working_directory str | Значение по умолчанию: "C:\\Windows\\System32" | Изменяет рабочий каталог при запуске процесса. |
Примечания
Примечание
- Этот модуль требует, чтобы на хосте Windows была настроена и включена служба SMB, а порт 445 был открыт в брандмауэре.
- Этот модуль будет ожидать завершения процесса, если параметр asynchronous не установлен в
yes. Убедитесь, что процесс запущен как неинтерактивная команда, чтобы избежать бесконечных зависаний в ожидании ввода. - connection_username должен быть членом локальной группы Администраторы на хосте Windows. Для хостов, не входящих в домен, следует установить
LocalAccountTokenFilterPolicyв1, чтобы обеспечить корректную работу. См. https://support.microsoft.com/en-us/help/951016/description-of-user-account-control-and-remote-restrictions-in-windows. - Для получения дополнительной информации об этом модуле и различных требованиях к хосту, см. https://github.com/jborean93/pypsexec.
Примеры
- 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: '{{ ansible_host }}'
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 str | модуль завершился с ошибкой | Любые детали ошибки при попытке выполнить процесс Пример: Ошибка получена от удаленной службы PAExec: Не удалось запустить "invalid.exe". Система не может найти указанный файл. [Ошибка=0x2, 2] |
| pid int | успех и асинхронный режим - 'да' | Идентификатор процесса асинхронного процесса, который был создан Пример: 719 |
| rc int | успех и асинхронный режим - 'нет' | Код возврата удалённого процесса |
| stderr str | успех и интерактивный или асинхронный режим - 'нет' | stderr от удалённого процесса Пример: Ошибка [10] при запуске процесса |
| stdout str | успех и интерактивный или асинхронный режим - 'нет' | stdout от удалённого процесса Пример: Привет мир |
Статус
Этот модуль помечен как превью, что означает, что он не гарантирует обратной совместимости.
Техническое обслуживание
Этот модуль помечен как сообщество, что означает, что он поддерживается сообществом Ansible. Подробнее см. Техническое обслуживание и поддержка модулей.
Список других модулей, также поддерживаемых сообществом 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.6/modules/psexec_module.html