如何在 shell 脚本中传递交互式 jar 文件的值

如何在 shell 脚本中传递交互式 jar 文件的值

我们在我们的环境中使用 oswatcher,它在 Redhat linux 5.6 /6.4 版本上运行并收集诊断信息。这是在 root 下安排的,每 30 秒运行一次并收集有关 iostat、网络统计、cpu 等的信息,并将所有信息保存在存档目录中的 .dat 文件(平面文件)中。

现在我们根据oswatcher黑盒分析器提供的交互命令进行分析。我们希望使用每 24 小时运行一次的 shell 脚本进行自动化分析,以挖掘 24 小时数据并生成仪表板。
以下是生成仪表板的命令,其中需要三个输入参数。一个是

java -jar oswbba.jar -i /opt/oracle/tfa/repository/suptools/<HOSTNAME>/oswbb/oracle/archive 

--现在以交互方式,它期望提供选项之一作为输入。

Enter X to Export Parsed Data to Flat File
Enter S to Analyze Subset of Data(Changes analysis dataset including graph time scale)
Enter A to Analyze Data
Enter D to Generate DashBoard

Enter Q to Quit Program

Please Select an Option:   << 1 or 2 or D (dashboard) >> 

(这里我想提供输入为 D 。我需要将这个输入作为 shell 脚本中的值传递)。我们怎样才能实现。同样,第二个输入是要创建用于分析的目录名称和目录路径。

所有这三个参数都需要在shell脚本中传递以进行自动化分析。

问候库马尔

答案1

当您说它以交互方式获取输入时,这意味着它正在从stdin.我们可以通过将输入回显到进程的来复制这一点stdin

echo "D" | java -jar oswbba.jar -i /opt/oracle/tfa/repository/suptools/<HOSTNAME>/oswbb/oracle/archive

请注意,echo自动以换行符结尾。

如果您需要额外的输入,您可以执行以下操作:

echo -e "D\n<next_input>\n<next_input>" | ...

-e标志可以解释转义序列,例如\n.

相关内容