Spec-Zone.ru › Ansible 2.8

psexec – Выполняет команды на удалённом хосте Windows на основе модели PsExec

Новая версия с 2.6.

  • Описание
  • Требования
  • Параметры
  • Примечания
  • См. также
  • Примеры
  • Возвращаемые значения
  • Статус

Описание

  • Выполняет удалённую команду с хоста Linux на хост Windows без настройки WinRM.
  • Может использоваться на контроллере Ansible для подготовки хостов Windows к WinRM.

Требования

Ниже перечислены требования, необходимые на хосте, выполняющем этот модуль.

  • pypsexec
  • smbprotocol[kerberos] для необязательной аутентификации Kerberos

Параметры

Параметр Варианты/Значения по умолчанию Комментарии
arguments
строка
Любые аргументы, как единая строка, используемые при запуске исполняемого файла.
asynchronous
булево
    Варианты:
  • no ←
  • yes
Выполнит команду как отдельный процесс, и модуль вернётся сразу после запуска процесса, в то время как процесс будет продолжать выполняться в фоновом режиме.
Значения 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
булево
    Варианты:
  • no
  • yes ←
Использует шифрование SMB для шифрования сообщений SMB, отправляемых на хост и с него.
Это требует протокола SMB 3, который поддерживается только с Windows Server 2012 или Windows 8. Более старые версии, такие как Windows 7 или Windows Server 2008 (R2), должны установить это значение в no и использовать без шифрования.
При установке значения no, пакеты находятся в открытом виде и могут быть видны всем, кто прослушивает сеть. В эти пакеты включены все параметры процесса.
executable
строка / обязательно
Исполняемый файл для запуска на хосте Windows.
hostname
строка / обязательно
Удалённый хост Windows для подключения. Может быть IP-адресом или именем хоста.
integrity_level
строка
    Варианты:
  • limited
  • default ←
  • elevated
Уровень целостности процесса, когда process_username определён и не равен System.
При default, используется уровень целостности по умолчанию, основанный на настройке системы.
При elevated, команда будет запущена с правами администратора.
При limited, команда будет принудительно запущена без прав администратора.
interactive
булево
    Варианты:
  • no ←
  • yes
Выполнит процесс как интерактивный процесс, который отображает окно процесса сессии Windows, указанной в interactive_session.
Значения stdout и stderr будут null, когда это значение установлено в yes.
Опция stdin не работает с этим типом процесса.
interactive_session
целое число
Значение по умолчанию:
0
Идентификатор сессии Windows, используемый при отображении интерактивного процесса на удалённом хосте Windows.
Это значение актуально только при interactive равном yes.
Значение по умолчанию — 0, что соответствует консольной сессии хоста Windows.
load_profile
булево
    Варианты:
  • no
  • yes ←
Запускает удалённую команду с загруженным профилем пользователя.
port
целое число
Значение по умолчанию:
445
Порт, на котором прослушивает удалённая служба SMB.
priority
строка
    Варианты:
  • above_normal
  • below_normal
  • high
  • idle
  • normal ←
  • realtime
Устанавливает приоритет команды на хосте 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
булево
    Варианты:
  • no ←
  • yes
Отображает интерфейс процесса на экране входа в систему (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. [community]

Авторы

  • 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.8/modules/psexec_module.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API