У меня проблема со службой Windows, в которой я просто не могу разобраться. Я пытаюсь выполнить HP WebInspect 9.0 из агента сборки TeamCity, который работает как служба Windows. Конечная цель - автоматизировать сканирование безопасности после публикации приложения в целевой среде.
У меня есть команда, которая прекрасно выполняется из командного окна, когда я удален на сервер:
"C:\Program Files\HP\HP WebInspect\wi.exe" -u http://mysite.com -r "Vulnerability (Classic)" -y Standard -f c:\Temp\Report.pdf -gp -v
Эта команда регулярно (каждые несколько минут) возвращает подробный вывод в терминал и, в конечном итоге, выводит отчет в формате PDF примерно через 13 минут (довольно стабильная продолжительность). Однако, как только я запускаю его из TeamCity, я вижу, что команда появляется в выводе сборки на сервере TeamCity, но после этого абсолютно ничего. Даже через 8 часов он просто зависает и я не знаю почему.
Дополнительная информация:
Я подозреваю, что по какой-то причине он сидит и ждет ввода, но я понятия не имею, почему. Я предполагаю, что служба, выполняющая команду под моей личностью, должна вести себя так же, как когда я вошел в систему и выполняю ту же команду - это предположение неверно? Есть ли еще что-нибудь, на что я могу взглянуть, чтобы попытаться разобраться в этом?
В качестве первого шага я бы рекомендовал сохранить вашу длинную командную строку в пакетном файле (например, LaunchWI.cmd) и вызвать этот пакетный файл из агента сборки TeamCity.
Когда вы запускаете приложение из службы Windows, текущий рабочий каталог будет установлен на c: \ windows \ system32 - это потенциально может вызвать некоторые проблемы. Попробуйте добавить
C:
Компакт-диск "\ Program Files \ HP \ HP WebInspect"
в свой командный файл перед запуском webinspect.