我在ColdFusion中创建一个webapp,它将在服务器上执行bash脚本。我想要做的是动态(实时)输出网页中的BASH输出本身,或者根据检查作业的状态输出我自己的状态文本。例如,如果我正在运行一个bash脚本并且它成功完成,我想把它放在网站上,但输出如下:
Starting test.sh....COMPLETE.
我希望它暂停在....并等待我检查输出(或日志文件),然后写入COMPLETE或FAILED,具体取决于日志告诉我的内容。有没有办法做到这一点?如果不清楚,我道歉。
答案 0 :(得分:0)
我建议让Java做这样的事情:
<cfscript>
p = createObject("java", "java.lang.Runtime").getRuntime().exec("/tmp/foo.sh");
reader = createObject("java", "java.io.BufferedReader").init(createObject("java", "java.io.InputStreamReader").init(p.getInputStream()));
line = reader.readLine();
while (not isNull(line))
{
writeOutput(line);
writeOutput("<br />");
getPageContext().getOut().flush();
line = reader.readLine();
}
writeOutput("<hr />");
writeOutput("done!");
</cfscript>
shell脚本如下所示:
#!/bin/bash
echo -e "one"
sleep 1
echo -e "two"
sleep 1
echo -e "three"
sleep 1
echo -e "four"
sleep 1
echo -e "five"