Запуск пакетного файла на удаленном компьютере с сервера hudson с использованием PSEXEC - PullRequest
3 голосов
/ 01 марта 2010

Я новичок в Hudson с PSEXEC, я использую hudson на своем компьютере, я хочу запустить пакетный файл на удаленном компьютере из сборки hudson. Я использовал PSEXEC для запуска командного файла на удаленном компьютере, когда я выполнил из командной строки, он успешно работает. Но то же самое я сделал из Хадсона, чтобы он завис. это.

Я хочу сделать это быстро ... срочно Любая помощь заметна

спасибо заранее.

Ответы [ 4 ]

2 голосов
/ 02 марта 2010

Может быть, psexec ожидает ввода пользователя? В этом случае Хадсон будет висеть.

Работает ли Hudson с вашими учетными данными? если не обед, то запросить команду с учетными данными, с которыми работает Хадсон, и посмотреть, что произойдет, если вы позвоните psexec Если hudson работает с локальной системной учетной записью, вы не можете запустить командную строку с ним. Чем попытаться запустить Hudson с вашими учетными данными и посмотреть, что произойдет.

Кстати, вы проверяли файлы журнала Hudsons (на случай, если что-то может быть)?

0 голосов
/ 06 марта 2012

Я думал, что отвечу на это, поскольку у меня была та же самая проблема с зависанием TeamCity и psExec. Поскольку я считаю, что на самом деле это проблема с Java, выполняющим psexec, это должно применяться и в случае с Hudson.

Хотя я столкнулся с тем, что проблема с Accepteula была на ранней стадии, вам нужно согласиться только один раз, и она установит параметры реестра. Как указывает user327759, параметр -accepteula в сценарии будет охватывать вашу базу в первый раз и навсегда.

Если это не решит вашу проблему, чего не произошло в моем случае, вам нужно добавить переключатель "-i". например: psexec -i \ ServerName "C: \ folder \ file.bat"

Для контекста, касающегося этого решения, я включил свою предысторию:

Мне удалось прекрасно выполнить эту команду PsExec с помощью задачи MsBuild, с помощью оболочки .Net и с использованием прямой командной строки, но TeamCity просто зависала при выполнении. Похоже, что Java ожидает некоторого ответа на стандартную версию in, когда она вызывает psexec exe. На удаленном сервере я бы увидел, как процесс psexecsvc запускается и регистрируется в консоли служб соответствующим образом, но затем он останавливается. После прочтения многих постов, таких как этот, и борьбы гораздо дольше, чем хотелось бы признать, в конце концов я попробовал опцию -i, несмотря на то, что это не нужно ни в каком другом сценарии выполнения, кроме TeamCity. В документации psexec указано, что -i будет запускать программу так, чтобы она взаимодействовала с рабочим столом указанного сеанса в удаленной системе. Если сеанс не указан, процесс запускается в сеансе консоли. " Мне до сих пор неясно, почему это так важно для TeamCity.

0 голосов
/ 22 ноября 2011

возможно, уже слишком поздно, но я подумал, что опубликую это для тех, у кого такая же проблема.

Psexec имеет проблемы с запуском с любого CI-сервера, не важно, какой у вас CI-сервер, это Hudson, Teamcity, ...) Psexec зависает при запуске с сервера сборки. Он не зависает для всех команд, но с некоторыми командами psexec будет зависать. Проблема заключается в том, как psexec будет читать вывод команды удаленного запуска. Конечным решением является использование других инструментов, кроме psexec. Вы можете проверить этот блог этого решения . Но если вам нужно более простое решение, и вы не заботитесь о выводе команды, я придумал простое решение, которое подавляет вывод psexec. Вы можете написать небольшую программу на c #, которая будет запускать команду psexec, подавляя ее вывод.

Я писал об этом здесь

0 голосов
/ 28 апреля 2010

У меня была та же проблема, когда PSEXEC просто зависал.

Решение, которое я нашел (после траления для AGES), было добавить параметр -accepteula в вызываемый PSEXEC.Хадсон перестал висеть после этого.

Очень расстраивает.

...