来自ant的PsExec不会终止

时间:2010-09-10 07:46:51

标签: tomcat ant psexec

我想在远程Windows机器上启动和停止tomcat服务器。我希望能够从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 个答案:

答案 0 :(得分:1)

花了一些时间后,我找到了解决方案。将参数'-d'提供给psexec,它将从标准输出中分离出来。

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

有一点需要注意,当添加'-d'时,psexec会返回已启动进程的PID而不是0,因此ant会认为命令失败。