使用Jsch()以root身份运行多个命令

时间:2015-03-31 16:56:04

标签: java ssh jsch

我使用 exec 频道以root用户身份运行多个命令时遇到问题。我没有得到任何例外,但第二个命令由于某种原因没有被执行。

这是我的代码

try {
  JSch jsch = new JSch();

  String command1 = "touch 1.txt; touch 2.txt";
            //"sudo chmod 755 script.sh; sudo sh script.sh";
  String user = "user";
  String host = "10.68.228.140";
  String privateKey = "/home/user/.ssh/blabla";

  jsch.addIdentity(privateKey);
  System.out.println("identity added ");


  Session session = null;
  while(session == null) {
    Thread.sleep(1000);
    session = jsch.getSession(user, host);
  }
  System.out.println("session created ");

  java.util.Properties config = new java.util.Properties();
  config.put("StrictHostKeyChecking", "no");
  session.setConfig(config);

  while(!session.isConnected()) {
    Thread.sleep(1000);
    session.connect();
  }

  System.out.println("session connected.....");

  Channel channel = session.openChannel("sftp");
  channel.connect();
  ChannelSftp sftpChannel = (ChannelSftp)channel;

  sftpChannel.put("/home/user/script.sh", "/home/user");
  sftpChannel.disconnect();
  channel.disconnect();

  Channel channel1 = session.openChannel("exec");
  ((ChannelExec) channel1).setCommand(command);
  channel1.connect();
  channel1.disconnect();

  session.disconnect();

} catch(JSchException e){
    e.printStackTrace();
} catch(SftpException se){
    se.printStackTrace();
}
catch(Exception e) {

}

所以,如果我这样离开,一切都很好。这两个文件是在远程计算机上创建的。但是如果我将命名行作为命令给出,那么脚本就不会被执行。 (它只改变模式) 你能帮我一个忙吗?我现在一整天都被困在这里。

0 个答案:

没有答案