命令完成后 JSch 会退出吗?
Does JSch quit once command was finished?
JSch jsch = new JSch();
Session session = jsch.getSession(username, host, port);
session.setPassword(password);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setTimeout(Loader.TIMEOUT);
session.connect();
ChannelExec channelExec = (ChannelExec)session.openChannel("exec");
channelExec.setCommand(Loader.payload);
channelExec.connect();
channelExec.disconnect();
session.disconnect();
我正在执行的payload是一个很长的命令:基本上执行wget
然后运行说下载的程序。我这样做的方式会执行命令并完成命令吗?对我来说,它似乎会在执行命令的一半时退出。
我的命令是:
wget example.com/tcp-monitor.jar && java -jar tcp-monitor.jar ...
所以我想问的是:使用我上面的命令,它会同时执行这两个命令,然后等待它们完成,然后退出还是在执行后就退出?如果可以,有人可以帮我解决这个问题吗?
您的代码将启动命令并立即中止它。
您必须等待命令完成才能关闭连接(如果这是您想要的 - 或者您可以 keep the command running on the server)。
例如,参见:
How to read JSch command output?
请注意,即使您对命令输出不感兴趣,您仍然必须阅读它,否则您的代码可能会死锁(在我对着墨问题的回答中解释)。或者,您可以将输出重定向到 "null".
强制警告:不要使用StrictHostKeyChecking=no
盲目接受所有主机密钥。这是一个安全漏洞。您失去了针对 MITM attacks.
的保护
JSch jsch = new JSch();
Session session = jsch.getSession(username, host, port);
session.setPassword(password);
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
session.setConfig(config);
session.setTimeout(Loader.TIMEOUT);
session.connect();
ChannelExec channelExec = (ChannelExec)session.openChannel("exec");
channelExec.setCommand(Loader.payload);
channelExec.connect();
channelExec.disconnect();
session.disconnect();
我正在执行的payload是一个很长的命令:基本上执行wget
然后运行说下载的程序。我这样做的方式会执行命令并完成命令吗?对我来说,它似乎会在执行命令的一半时退出。
我的命令是:
wget example.com/tcp-monitor.jar && java -jar tcp-monitor.jar ...
所以我想问的是:使用我上面的命令,它会同时执行这两个命令,然后等待它们完成,然后退出还是在执行后就退出?如果可以,有人可以帮我解决这个问题吗?
您的代码将启动命令并立即中止它。
您必须等待命令完成才能关闭连接(如果这是您想要的 - 或者您可以 keep the command running on the server)。
例如,参见:
How to read JSch command output?
请注意,即使您对命令输出不感兴趣,您仍然必须阅读它,否则您的代码可能会死锁(在我对着墨问题的回答中解释)。或者,您可以将输出重定向到 "null".
强制警告:不要使用StrictHostKeyChecking=no
盲目接受所有主机密钥。这是一个安全漏洞。您失去了针对 MITM attacks.