【问题标题】:Need to execute shell script from webapp and display console output in page需要从 webapp 执行 shell 脚本并在页面中显示控制台输出
【发布时间】:2009-01-09 17:13:40
【问题描述】:

我正在寻找可以帮助我将其集成到 Struts2/Spring 应用程序中的 java 示例或库。许多构建系统,如 Luntbuild 或 Hudson 都具有此功能,我想在尝试从其中一个中挖掘它之前,我想我会问是否有人知道一个独立的示例。我也浏览了 Quartz 作业调度框架,但我还没有找到 UI 钩子。我只需要从包含 JSP 的文件中读取吗?

【问题讨论】:

    标签: java web-applications shellexecute


    【解决方案1】:

    如果我理解您想要做什么,这是 Java 中的一种方式。这会执行 ls 命令,然后捕获 shell 输出并将其写回 System.out。

    public class TestShell {
        public static void main(String[] args)
        {
            try
            {
                    String cmd = "ls\n";
                    Process p = Runtime.getRuntime().exec(cmd);
                    p.waitFor();
                    BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
                    while(r.ready()) {
                        System.out.println(r.readLine());
                    }
    
            }
            catch (Throwable t)
                    {
                    t.printStackTrace();
            }
        }
    }
    

    【讨论】:

    • 您还可以添加: BufferedReader r2 = new BufferedReader(new InputStreamReader(p.getErrorStream())); while(r2.ready()) { System.out.println(r2.readLine()); } 也可以得到标准错误输出
    • p.waitFor() 有多重要?
    • 据说它等待进程退出。我不确定您是否可以在那之前阅读。我最终不需要 shell 输出来做我正在做的事情,所以我没有完全探索它。我确实知道在 windows 下运行尝试做同样的事情我有时间问题
    • (cont.'d) 随着 shell 关闭,我不会得到完整的目录列表。
    猜你喜欢
    • 2014-03-17
    • 1970-01-01
    • 2018-05-13
    • 1970-01-01
    • 2021-01-22
    • 1970-01-01
    • 1970-01-01
    • 2013-04-20
    • 2014-12-22
    相关资源
    最近更新 更多