java - 在 java shell 上执行 Linux 命令 (mutt) 无法正常工作

标签 java linux shell

我有一种情况,我想(需要)在执行给定的 java 程序时通过电子邮件发送文件。复制命令在 Windows 和 Linux 上都可以正常执行,但是,当在 java 上命令执行时,mutt 不起作用。命令字符串生成得完美无缺(我目前手动键入打印到控制台的字符串以手动发送电子邮件),但是 Runtime.getRuntime.exec() 未正确执行它。

        if (OS.indexOf("win") >= 0)
        {
            // windows
            cmd = "cmd /C copy "+workbookFileName+" "+latestWorkbookFileName;
            System.out.println("executing command windows: "+cmd);
            Runtime.getRuntime().exec(cmd);
        }
        else
        {
   //         others
            cmd = "cp "+workbookFileName+" "+latestWorkbookFileName;
            System.out.println("executing Linux: "+cmd);
            Runtime.getRuntime().exec(cmd);



            cmd = "echo \"This is the message body\" | mutt -a \""+workbookFileName+"\" -s \"message subject\" -- sqlinjection@domain.com";
            System.out.println("executing Linux: "+cmd);
            Runtime.getRuntime().exec(cmd);

            System.out.println("bye");


        }

最佳答案

这是一个关于如何使用 Runtime.exec 的很好的教程 When Runtime.exec() won't .

这个想法是,您需要使用由 Runtime.exec 创建的进程的标准输入、输出和错误,而我提到的站点是完美的。

关于java - 在 java shell 上执行 Linux 命令 (mutt) 无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18695328/

相关文章:

java - 将 long 的最大值分配给 long 类型会引发异常

php - 我需要在服务器端做什么来接受 wget 通过简单的 HTTP POST 上传的文件?

c - 映射文件在读取时不占用内存,但在写入时占用内存

bash - 下载完成之前使用 SFTP 和 mget 完成的 Shell 脚本

c - 识别 shell 命令文本中未加引号的特殊字符

java - 在构建时自动更新 Liquibase 的变更日志

java - 使用 HttpServletRequest 类型的参数对方法进行单元测试

java - gradle 构建文件放在哪里?

linux - ALSA ASoC 简单声卡驱动程序中的 DAPM 路由是什么意思?

bash - 在 Bash 中重定向 stderr 和 stdout