community.windows.psexec – Выполняет команды на удалённом хосте Windows, основанном на модели PsExec
Примечание
Этот плагин входит в состав коллекции community.windows (версия 1.2.0).
Для его установки используйте: ansible-galaxy collection install community.windows.
Для использования в книге задач укажите: community.windows.psexec.
Описание
- Выполняет удалённую команду с хоста 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 от сервера. |
| 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/en-us/help/951016/description-of-user-account-control-and-remote-restrictions-in-windows. - Для получения дополнительной информации об этом модуле и различных требованиях к хосту, см. https://github.com/jborean93/pypsexec.
См. также
См. также
- ansible.builtin.raw
-
Официальная документация по модулю ansible.builtin.raw.
- ansible.windows.win_command
-
Официальная документация по модулю ansible.windows.win_command.
- community.windows.win_psexec
-
Официальная документация по модулю community.windows.win_psexec.
- ansible.windows.win_shell
-
Официальная документация по модулю ansible.windows.win_shell.
Примеры
- name: Run a cmd.exe command
community.windows.psexec:
hostname: server
connection_username: username
connection_password: password
executable: cmd.exe
arguments: /c echo Hello World
- name: Run a PowerShell command
community.windows.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
community.windows.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
community.windows.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
community.windows.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])
community.windows.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)
community.windows.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
community.windows.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". Система не может найти указанный файл. [Ошибка=0x2, 2] |
| pid целое число | успех и асинхронный режим — 'да' | Идентификатор процесса асинхронного процесса, который был создан Пример: 719 |
| rc целое число | успех и асинхронный режим — 'нет' | Код возврата удалённого процесса |
| stderr строка | успех и интерактивный или асинхронный режим — 'нет' | Вывод стандартного потока ошибок удалённого процесса Пример: Ошибка [10] при выполнении процесса |
| stdout строка | успех и интерактивный или асинхронный режим — 'нет' | Вывод стандартного потока вывода удалённого процесса Пример: Привет мир |
Авторы
- 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.10/collections/community/windows/psexec_module.html