我们正在为autosys代理构建一个基本监视实用程序,其中一个命令告诉我们代理是否处于活动状态是“autoping -M”。我们当前的工具已经由其他人编写,使用的是Java,我们需要添加一个具有此功能的新类。
该类需要有一个运行autoping命令的方法,并将输出捕获到File。这是我目前的代码
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintWriter;
public class TestAgent
{
public static void main(String args[]) throws IOException, InterruptedException
{
buildBatchFile();
}
public static void buildBatchFile() throws IOException, InterruptedException
{
String instanceName="ABM";
PrintWriter writer = new PrintWriter("D:\\autoping-batch.bat");
writer.println("set AUTOSYS=\"D:\\PROGRA~2\\CA\\WORKLO~1\\autosys\"");
writer.println("set AUTOROOT=\"D:\\PROGRA~2\\CA\\WORKLO~1\"");
writer.println("set AUTOSERV="+instanceName);
writer.println("set AUTOUSER=D:\\PROGRA~2\\CA\\WORKLO~1\\autouser."+instanceName);
writer.println("set CASHCOMP(x86)=D:\\PROGRA~2\\CA\\SC");
writer.println("set PATH=%AUTOSYS%\\bin;%PATH%");
writer.println("autoping -M ALL >> D:\\autopingResults.txt");
writer.close();
//Thread.sleep(5000);
Runtime.getRuntime().exec("cmd /c D:\\autoping-batch.bat");
}
}
可以看出,我正在尝试创建批处理文件并运行它,但输出不会被autopingResults.txt
文件捕获。它只是空白。
此外,我认为命令实际上并未执行。我如何调试它,是否有更好的方法来动态设置这些环境变量(可能使用System.setProperty
?)并运行autoping
命令?
如果没有设置变量,autoping
将返回如下错误:
C:\WINDOWS\system32>autoping
Resource bundle is not available while looking for key="CAUAJM_E_80003".
设置变量后输出如下:
C:\WINDOWS\system32>set AUTOROOT=D:\PROGRA~2\CA\WORKLO~1
C:\WINDOWS\system32>set AUTOSERV=ADK
C:\WINDOWS\system32>set AUTOSYS=D:\PROGRA~2\CA\WORKLO~1\autosys
C:\WINDOWS\system32>set AUTOUSER=D:\PROGRA~2\CA\WORKLO~1\autouser.ADK
C:\WINDOWS\system32>set PATH=%AUTOSYS%\bin;%PATH%
C:\WINDOWS\system32>autoping -M ALL
CAUAJM_I_50023 AutoPinging Machine [XXX.YYY.com]
CAUAJM_I_50025 AutoPing WAS SUCCESSFUL.