2

我正在尝试使用运行时 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,但本地和远程系统上所需的服务没有启动/停止

4

1 回答 1

1

这里的问题是,您需要为 tomcat 用户添加管理员权限。因为这个 Apache Tomcat Monitor 程序需要与系统服务交互的权限,所以它不能作为标准用户执行。

做以下任务,你会没事的

在 Windows 资源管理器中找到 tomcat7w.exe 程序(默认目录为 C:\Program Files\Apache Software Foundation\Tomcat 7.0\bin)。

右键单击此文件的名称并选择属性上下文菜单项。

将显示 tomcat7w 属性对话框。选择兼容性选项卡,然后单击对话框底部的“显示所有用户的设置”按钮或“更改所有用户的设置”按钮。

将显示一个新的 tomcat7w.exe 属性对话框,其中包含一个名为 Compatibility for all users 的选项卡。在此对话框底部的权限级别组框中,选择以管理员身份运行此程序。

当从标准用户帐户运行时,Apache Tomcat Monitor 可执行文件现在将以所需的权限执行。

有关更多信息,请参阅 https://supportcontent.ca.com/cadocs/0/CA%20Automation%20Point%20Base%2011%204-ENU/Bookshelf_Files/HTML/AP--RelNotes/index.htm?toc.htm? 2009998.html

于 2013-08-12T02:26:21.073 回答