【发布时间】:2020-02-07 13:57:42
【问题描述】:
我尝试使用来自 txtfield 的用户输入来启动 .sh 脚本。 思路:用户在 txt 字段中写入参数。当按下按钮时,脚本以这个参数开始。
我的代码:
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt)
{
String valueURL;
valueURL = URLtxt.getText().toString();
ProcessBuilder processBuilder = new ProcessBuilder();
// -- Linux --
// Run a shell command
processBuilder.command("bash", "-c","nikto -h", valueURL,");
try {
Process process = processBuilder.start();
StringBuilder output = new StringBuilder();
BufferedReader reader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
output.append(line + "\n");
}
int exitVal = process.waitFor();
if (exitVal == 0)
{
this.hide();
ScanWS sws = new ScanWS() ;
sws.setVisible(true);
【问题讨论】:
-
你的代码的结果是什么?
-
引用显然是错误的。你可能想要
processBuilder.command("bash", "-c","nikto -h \"$1\"", "", valueURL);之类的东西——注意bash -c "script; more script"之后的第一个参数是一个占位符(它用于填充$0)。 -
但是
bash -c在这里没有做任何有用的事情;可能简化为processBuilder.command("nikto", "-h", valueURL); -
结果是带有参数 -h 和 web url 的命令“nikto”的开始。
-
如果我使用例如 processBuilder.command("bash", "-c","nikto -h google.com");它工作正常。但我不会将来自我的 GUI 的 jtextfield 中的字符串放在 google.com 的位置
标签: java swing sh jtextfield processbuilder