我正在尝试使用运行时 exec 从 servlet 运行 psservice.exe 和 plink.exe。它将用于在运行 windows 和 unix aix 的远程计算机上启动或停止服务。
我已经设置了系统变量,以便能够从命令提示符运行它们。这些命令可以从命令提示符和 java 程序完美运行
我在 Servlets 中为远程 Windows 机器使用下面的代码
Runtime.getRuntime().exec(serverPropLoader.getServerProperties("psservice \\\\172.xx.xx.xx -u username -p password stop MySQL"));
我在 Servlets 中为远程 unix aix 5.3 机器使用以下代码
Runtime.getRuntime().exec(serverPropLoader.getServerProperties("PLINK.exe -ssh -pw "password" username@172.xx.xx.xx /home/mysql/stopservice.sh"));
以下是我的观察:
如果我使用 Tomcat6 从 Eclipse(版本 3.4.2)运行上述语句,它运行得非常好,但是如果将我的 Web 应用程序导出为 WAR 并手动将其部署到 Tomcat6 中,它不会运行。(我已经尝试在我的和其他系统中部署它)
我尝试将这些命令放在批处理文件中并从 servlet 调用它,但没有成功。从批处理文件“net”和“sc”命令正在运行,但我无法运行 pservice 和 plink 命令。“sc”命令也仅适用于本地进程。
执行 servlet 后,我可以在 Windows 任务管理器中看到 psservice.exe 和 plink.exe,但本地和远程系统上所需的服务没有启动/停止