java - JSch 一次执行多个 linux 命令

标签 java linux jsch

我的目标是使用 java 应用程序连接到我的 linux 服务器并执行 linux 命令。我已经使用 JSch API 实现了这一点,但我似乎无法弄清楚如何一次执行多个命令。

这对我来说是个问题,因为我需要导航到某个目录,然后从该目录执行另一个命令。在第二个命令可以在正确的目录中执行之前,我的应用程序就退出了。

这是我的方法,当它作为参数传递时将一个 linux 命令作为字符串执行并打印任何输出。

public void connect(String command1){

try {
        JSch jsch = new JSch();

        Session session = jsch.getSession(user, host, port);
        session.setPassword(password);
        session.setConfig("StrictHostKeyChecking", "no");
        session.connect();
        System.out.println("Connected");

        Channel channel = session.openChannel("exec");
        ((ChannelExec)channel).setCommand(command1);
        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()){
            System.out.println("exit-status: "+channel.getExitStatus());
            break;
          }
          try {
              Thread.sleep(1000);
          }
          catch(Exception ee){
              ee.printStackTrace();
          }
        }

        channel.disconnect();
        session.disconnect();
        System.out.println("DONE");

  }
catch(Exception e){
        e.printStackTrace();
    }

}

知道如何同时执行 2 个命令吗?

最佳答案

如果在远程机器上启动了一个普通的 shell,使用 ;&& 构造来做更多的事情。

如在

cd /home/foo/banana ; do_things

cd /home/foo/banan && do_things #do_things will only be run if the cd command is successfull

关于java - JSch 一次执行多个 linux 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12297319/

相关文章:

java - 具有自签名证书的双向 SSL 客户端

linux - 解析 XML - 从标签中减去值

linux tr 命令 - 将 mysqldump 插入拆分到不同的行

android - 如何从 Ubuntu 中的任何目录打开 Android Studio?

java - 如何使用在我的 Windows 机器上运行的 Java 代码写入 Linux 中的文件?

java - 为什么有必要在泛型通配符中读取和 super 写入的情况下进行扩展?

java - H2数据库和Spring Data忽略@Lob字段注释

Java 3d API : Rotating a BoundingBox delivers a new Box with more volume

java - 使用 JSch 和 Java 捕获服务器命令输出

ssh - Jsch:通过隧道的 HTTPS