gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:26:09 27 4
gpt4 key购买 nike

我的目标是使用 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/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com