使用java执行远程服务器中存在的shell脚本

时间:2014-07-21 17:16:19

标签: java shell desktop remote-server jsch

尝试使用以下代码执行远程服务器中存在的.sh文件。

     String command1="/home/support/test.sh";
        try{

            java.util.Properties config = new java.util.Properties(); 
            config.put("StrictHostKeyChecking", "no");
            JSch jsch = new JSch();
            Session session=jsch.getSession(user, host, 22);
            session.setPassword(password);
            session.setConfig(config);
            session.connect();
            System.out.println("Connected");

            Channel channel=session.openChannel("exec");
             ((ChannelExec) channel).setCommand(command1);

            ((ChannelExec) channel).setErrStream(System.err);


            channel.connect();






            channel.disconnect();
            session.disconnect();

shell脚本中的内容:

     flname="12.log"
     yest=`head -1 yes.txt`
     filename=$flname.$yest

    filename3=${filename}_prod3


  scp  user@82.xx.xx.xx:/app/12/log/${filename}           
  /home/support/${filename}
    mv ${filename} ${filename3}

   today=$( date +"%Y-%m-%d")

    java -jar /home/hybris/support/timeoutRprt.jar  /home/support/${filename3} 

从桌面上的java类执行远程服务器中存在的脚本后,它不会在远程服务器中创建文件(脚本中存在的jar文件的输出)。 但是如果我通过putty手动执行脚本,它会生成所需的文件。

这可能是什么情况?

1 个答案:

答案 0 :(得分:1)

在JSCH和PuTTY下运行时,您确定它们是从同一目录运行的吗?事实上它在一个案例中找不到yes.txt但在另一个案例中它可以在本地目录中找到差异。您是否使用相同的登录JSCH和PuTTY?