Я пытаюсь запустить удаленную команду с помощью psexec через Jenkins. Если я запустил команду напрямую через командную строку, я получу ожидаемый результат. Если я запускаю ту же самую команду через Jenkins, кажется, что выводится только первая строка.
Как я могу заставить Jenkins / PSExec / CMD отображать полный вывод stdout? Я пробовал несколько флагов командной строки, таких как запуск PSExec в интерактивном режиме (-i, -i 0, -i 1), и другие параметры, которые кажутся актуальными, и даже те, которые не подходят.
Пример команды:
PsExec.exe -accepteula \\server cmd /c ipconfig
Вывод командной строки:
PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com
Windows IP Configuration
Ethernet adapter Local Area Connection:
Connection-specific DNS Suffix . :
Link-local IPv6 Address . . . . . : fe30::f175:1634:asf4:756e%12
IPv4 Address. . . . . . . . . . . : 10.128.51.66
Subnet Mask . . . . . . . . . . . : 255.255.255.0
Default Gateway . . . . . . . . . : 10.128.51.1
Tunnel adapter isatap.{5EA7E8FB-C491-483E-B24D-3CBDFA2D5619}:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
Tunnel adapter Local Area Connection* 11:
Media State . . . . . . . . . . . : Media disconnected
Connection-specific DNS Suffix . :
cmd exited on tst-hrm-app03.nexjtest.local with error code 0.
Выход Jenkins:
C:\NexJ\jboss-5.1.0.GA\server\all_8280\jenkins\workspace\Build and Deploy TEST>PsExec.exe -accepteula \\server ipconfig
PsExec v2.11 - Execute processes remotely
Copyright (C) 2001-2014 Mark Russinovich
Sysinternals - www.sysinternals.com
Windows IP Configuration
Connecting to tst-hrm-app03.nexjtest.local...
Starting PSEXESVC service on tst-hrm-app03.nexjtest.local...
Connecting with PsExec service on tst-hrm-app03.nexjtest.local...
Starting ipconfig on tst-hrm-app03.nexjtest.local...
ipconfig exited on tst-hrm-app03.nexjtest.local with error code 0.
Я только что тестировал Дженкинса, и у меня это сработало. Вы можете протестировать другие команды, более простые команды, такие как dir. Кроме того, Jenkins имеет тенденцию изменять порядок или stdout / stderr, поэтому я запустил службу PSEXESVC после того, как ipconfig распечатал вывод. И, кстати, если вы хотите получить IP-адрес, почему бы вам не пропинговать машину, используя ее имя (если вы не хотите получить все сетевые карты и MAC-адреса) — person leeman24 schedule 23.06.2016
На самом деле я использовал ipconfig как более простую команду. Фактическая команда будет вызовом сценария сборки и развертывания (который работает, но не отображает вывод). В итоге я использовал альтернативу под названием paexec (которая меня не волнует), но я могу видеть весь вывод. Я бы по-прежнему предпочел использовать psexec, но у меня не хватило вещей, чтобы попробовать. Какую версию вы используете? — person leeman24 schedule 24.06.2016
та же версия psexec, что и вы. Но, возможно, не та версия Дженкинса. — person leeman24 schedule 24.06.2016
У меня была такая же проблема с psexec. Psexec записал список задач в текстовый файл. После того, как я попытался это прочитать. Но psexec читает только часть строк. Свою проблему я решил комбинацией команд.
Записать в файл
psexec \\remote_pc cmd /c tasklist /v /fi "imagename eq magentproc.exe" /fo list > C:\temp.txt
Прочтите его с помощью findstr с параметром регулярного выражения
psexec \\remote_pc cmd /c findstr /r ".*" C:\temp.txt
Может кому будет полезно.