无法从Java程序

时间:2015-07-30 00:29:06

标签: java linux shell

我有一个在Linux上运行的java程序,试图调用一个shell脚本。此shell脚本尝试将本地目录复制到另一台服务器。调用脚本的方法是:

bash copy_logs.sh "TestResults/07232015042652"

当我从linux终端调用它时,该目录会成功复制到远程服务器。现在我想从Java程序执行它。我的代码段如下:

Sting direc = "07232015042652"
p = Runtime.getRuntime().exec("bash copy_logs.sh \"TestResults/"+direc+"\"");

当我运行它时,虽然我没有得到任何错误或异常,但文件永远不会被复制。

copy_logs.sh的内容如下:

scp -r $TS test@192.168.199.57:/home/apacheweb/html/Weekly_Status/prov_check/
if [ $? -eq 0 ]
then
        echo "File copied successfully"
else
echo "Failed to copy"

我试图通过

打印执行结果
InputStream is = p.getInputStream();
    StringBuilder sb = new StringBuilder();

    int i=0;
    try {
        while ((i=is.read())!=-1){
            sb.append((char)i);
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    System.out.println(sb);

我得到输出:无法复制。只是想知道这可能是什么原因???

1 个答案:

答案 0 :(得分:0)

得到它的工作:

 ProcessBuilder pb = new ProcessBuilder("bash", "-c", "/bin/bash copy_logs.sh \"TestResults/"+directoryName+"\"");
 Process shell = pb.start();
相关问题