Запуск удаленного пакетного файла с использованием psexec через Jenkins завершается неудачно.

Запуск удаленного пакетного файла с использованием psexec через Jenkins завершается неудачно. Запуск того же батника с помощью psexec напрямую с слейва работает без шарма.

Позвольте мне предоставить дополнительную информацию. Дженкинс и его ведомое устройство находятся в другом домене, чем наша целевая машина.

Когда я запускаю пакетный файл следующим образом:

"D:\Temp\PsTools\PsExec.exe" \\<targetmachine> -u <targetdomain\targetdomainuser> -p <pwd> -accepteula  "d:\temp\remotescript.bat" arg1 arg2

непосредственно с подчиненного устройства (удаленный рабочий стол захватывает компьютер и открывает командную строку) это работает отлично.

При вводе его на этапе пакетной сборки Windows в Jenkins нет видимого вывода, и я просто вижу счетчик, но больше ничего не происходит, и сборка зависает, ставя в очередь любую другую сборку, создавая огромное отставание. По-видимому, я получаю аудит сбоев, когда мой пользователь Jenkins пытается войти в систему на целевой машине, однако я указал пользователя домена с правами администратора на целевой машине (пользователь домена для домена целевой машины).

Кто-нибудь знает, почему пользователь пытается войти в систему с любыми другими учетными данными, кроме предоставленных, и почему это работает, запуская его напрямую с Jenkins-slave?

Или любой другой способ добиться этого (запуск командного файла на удаленной машине) более чем приветствуется.


person Guillaume Schuermans    schedule 25.02.2013    source источник


Ответы (4)


Это печально известная проблема с psexec:

http://forum.sysinternals.com/psexec-always-hangs-when-run-from-java_topic5013.html

Вывод программы теряется при передаче через PsExec

Можно попробовать через xCmd: http://feldkir.ch/xcmd.htm (не получится против локального хоста)

person npocmaka    schedule 25.02.2013
comment
Локальный хост не беспокоит. У меня были небольшие проблемы с получением файла xCmd из-за ложного предупреждения о вирусах, но он заработал. Мне нужно исследовать одну небольшую ошибку, вероятно, из-за передачи моих аргументов. - person Guillaume Schuermans; 27.02.2013
comment
У меня возникла проблема с xCmd при подключении к 64-битным серверам: Не удалось запустить удаленную службу. Ошибка: 2 - Система не может найти указанный файл. Простой способ исправить это — скопировать xCmdSvc.exe из C:\Windows\System32 в C:\Windows\SysWOW64. - person Der_Meister; 21.01.2014

PAExec является функциональным клоном PSExec и позволяет нам увидеть вывод через Jenkins и т. д..

http://www.poweradmin.com/paexec/

XCmd — это то, что мы использовали в HP, но по какой-то причине он не работает на моем текущем концерте.

Я не знаю, когда появился PAExec, но это кажется идеальным решением. Вскоре после обнаружения (сегодня) я столкнулся с периодической проблемой с очень длинным/задействованным конвейером развертывания Jenkins.

person Paul Lockwood    schedule 10.01.2015
comment
Павел, спасибо вам большое! У меня была такая же проблема, что вызов psexec через Jenkins возвращает только 80 символов в стандартный вывод. PAExec работает идеально. Я вижу все stdout в выводе Jenkins! - person akozin; 08.04.2015
comment
@Guillaume~ Спасибо, что разместили этот вопрос! Пригодился через 3 года. Павел и akozin спасибо, я пробовал это больше двух недель! Я не знаю, как я буду благодарить вас за это. - person HunterrJ; 13.05.2016
comment
Пол, большое спасибо ... Я пытался это сделать так много дней, и с вашим ответом я справился за 2 минуты ... спас мне жизнь ..: D - person Stack_IQ; 17.05.2017

Попробуйте это, это сработает

"D:\Temp\PsTools\PsExec.exe" \\\\remoteMachine -u username -p password /accepteula -h cmd /c "C:\remotescript.bat"
person Ashoka    schedule 09.09.2014

попробуй пару штук...

  1. добавьте опцию параметра 0 после accepteula в вашей команде, которая должна убить любой существующий процесс psexec, который завис, и начать обработку вашего psexec

  2. проверьте машину на 32-битную или 64-битную..

    для 64-разрядной версии psexec ищется в C:\Windows\system32
    для 32-разрядной версии psexec ищется в C:\Windows\SysWOW64

в задании jenkins вы можете установить версию msbuild на 64-битную или 32-битную соответственно, и она должна работать должным образом.

person Sunil Bemarkar    schedule 16.10.2013