jsch怎么用,帮我写一段示例代码
时间: 2023-10-24 15:23:00 浏览: 117
JSch是一个Java实现的SSH客户端库,可以用于连接SSH服务器、执行命令、上传下载文件等操作。以下是一个简单的示例代码,演示如何使用JSch连接到SSH服务器并执行一个简单的命令:
```java
import com.jcraft.jsch.*;
public class SSHExample {
public static void main(String[] args) {
String host = "example.com";
String user = "username";
String password = "password";
String command = "ls -l";
try {
JSch jsch = new JSch();
Session session = jsch.getSession(user, host, 22);
session.setPassword(password);
// Avoid asking for key confirmation
Properties prop = new Properties();
prop.put("StrictHostKeyChecking", "no");
session.setConfig(prop);
session.connect();
Channel channel = session.openChannel("exec");
((ChannelExec) channel).setCommand(command);
channel.setInputStream(null);
((ChannelExec) channel).setErrStream(System.err);
InputStream in = channel.getInputStream();
channel.connect();
byte[] buf = new byte[1024];
while (true) {
while (in.available() > 0) {
int i = in.read(buf, 0, 1024);
if (i < 0) {
break;
}
System.out.print(new String(buf, 0, i));
}
if (channel.isClosed()) {
if (in.available() > 0) {
continue;
}
System.out.println("exit-status: " + channel.getExitStatus());
break;
}
try {
Thread.sleep(1000);
} catch (InterruptedException ee) {
}
}
channel.disconnect();
session.disconnect();
} catch (JSchException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
```
在这个示例中,我们首先定义了需要连接的SSH服务器的主机名、用户名和密码,以及要执行的命令。然后,我们创建了一个JSch对象,使用它创建一个新的SSH会话,并设置密码。接下来,我们设置SSH客户端的一些配置选项,避免询问密钥确认。
然后,我们连接到SSH服务器,并打开一个执行命令的通道。我们设置要执行的命令,并将标准输入流设置为null,将标准错误流重定向到System.err。我们还打开了一个输入流,以便读取命令的输出。
然后,我们循环读取输入流中的数据,并将其输出到控制台。我们还检查通道是否已关闭,并在通道关闭时打印出退出状态。
最后,我们关闭通道和会话。
这个示例只是一个简单的演示,JSch还支持更复杂的操作,如上传和下载文件,打开SFTP通道等。如果需要更多的功能,你可以查看JSch的官方文档。
阅读全文