如何使用Jsch exec在服务器内写入文件

时间:2015-04-07 17:55:18

标签: java shell unix ssh jsch

我尝试了一些命令,例如

echo "Your text here" | ssh hostname 'cat >> output.txt'

但它没有用。

如何使用此exec代码或仅将我将放入String命令的ssh命令写入服务器内的文件。

public class TestWrite{

    private static final String user = "username here";
    private static final String host = "host here";
    private static final String password = "pass here";


    public static void main(String[] arg){
    try{
      JSch jsch=new JSch();  

      Session session=jsch.getSession(user, host, 22);
      session.setPassword(password);
      session.setConfig("StrictHostKeyChecking", "no");
      session.connect();

        String command = "Command here";

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


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

      InputStream in=channel.getInputStream();

      channel.connect();

      byte[] tmp=new byte[1024];
      while(true){
        while(in.available()>0){
          int i=in.read(tmp, 0, 1024);
          if(i<0)break;
          System.out.print(new String(tmp, 0, i));
        }
        if(channel.isClosed()){
          if(in.available()>0) continue;
          System.out.println("exit-status: "+channel.getExitStatus());
          break;
        }
        try{Thread.sleep(1000);}catch(Exception ee){}
      }
      channel.disconnect();
      session.disconnect();
    }
    catch(Exception e){
      System.out.println(e);
    }
  }

}

2 个答案:

答案 0 :(得分:1)

您可以使用

写入文件
echo "your text here" > file

你不需要ssh,因为Jsch取而代之。

答案 1 :(得分:0)

尝试以下命令:

ssh hostname 'echo "Your text here" >> output.txt'