PsExec от муравья не заканчивается - PullRequest
4 голосов
/ 10 сентября 2010

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

Мне не удалось решить эту проблему с помощью sc.exe, поскольку невозможно передать имя пользователя и пароль на удаленный компьютер.

Вместо этого я использую psexec для запуска команд на удаленном сервере. Мой сценарий муравья выглядит так:

<target name="start_tomcat_server">
    <exec executable="psexec.exe" failonerror="true">
        <arg value="/accepteula"/>
        <arg value="\\test_host"/>
        <arg value="-u"/>
        <arg value="username"/>
        <arg value="-p"/>
        <arg value="password"/>
        <arg value="net"/>
        <arg value="start"/>
        <arg value="tomcat6"/>
    </exec>
</target>

Если я запускаю эту команду из командной строки, все работает нормально:
psexec.exe /accepteula \\test_host -u username -p password net start tomcat6

Но, когда я запускаю цель ant, процесс psexec никогда не завершается, он просто зависает с таким выводом:

start_tomcat_server:
     [exec]
     [exec] PsExec v1.98 - Execute processes remotely
     [exec] Copyright (C) 2001-2010 Mark Russinovich
     [exec] Sysinternals - www.sysinternals.com
     [exec]

Любые идеи, что я могу сделать, чтобы сделать эту работу?

1 Ответ

1 голос
/ 13 сентября 2010

Потратив немного больше времени, я нашел решение для этого. Передайте параметр '-d' в psexec, и он отсоединится от стандартного выхода.

        ...
        <arg value="-d"/>
        ...

Стоит отметить, что при добавлении '-d' psexec возвращает PID запущенного процесса, а не 0, поэтому ant будет считать, что команда завершилась неудачей.

...