Java调用ssh执行Linux命令
-
Java可以使用JSch库来调用ssh执行Linux命令。
首先,需要导入JSch库。可以在Maven项目中添加以下依赖:
“`xml
com.jcraft
jsch
0.1.55
“`然后,可以使用以下代码来执行Linux命令:
“`java
import com.jcraft.jsch.*;public class SshCommandExecutor {
public static void main(String[] args) {
String host = “your_host”;
int port = 22;
String username = “your_username”;
String password = “your_password”;try {
JSch jsch = new JSch();
Session session = jsch.getSession(username, host, port);
session.setPassword(password);
session.setConfig(“StrictHostKeyChecking”, “no”);
session.connect();ChannelExec channelExec = (ChannelExec) session.openChannel(“exec”);
channelExec.setCommand(“your_linux_command”);channelExec.connect();
InputStream inputStream = channelExec.getInputStream();
byte[] buffer = new byte[1024];
StringBuilder output = new StringBuilder();
while (inputStream.read(buffer) != -1) {
output.append(new String(buffer));
}
System.out.println(output.toString());channelExec.disconnect();
session.disconnect();
} catch (JSchException | IOException e) {
e.printStackTrace();
}
}
}
“`在上述代码中,需要将`your_host`、`your_username`、`your_password`和`your_linux_command`替换成实际的主机、用户名、密码和Linux命令。
以上代码会连接到指定的SSH服务器,并执行指定的Linux命令。执行结果会输出到控制台。
需要注意的是,为了安全起见,建议使用SSH密钥验证方式来替代密码验证方式。可以使用`jsch.addIdentity(“your_private_key_path”)`来指定私钥文件的路径。
另外,还可以通过设置环境变量`JSCH_SSHD`来启用服务器端调试信息输出,方便排查问题。例如,可以设置`JSCH_SSHD=debug`来输出调试信息。
以上就是使用Java调用ssh执行Linux命令的方法。希望对你有帮助!
2年前 -
要在Java中调用SSH执行Linux命令,可以使用JSch库。以下是在Java中使用JSch库执行SSH命令的步骤:
1. 首先,需要添加JSch库的依赖项。可以通过在项目的构建工具(如Maven或Gradle)的配置文件中添加JSch库的依赖项来实现。例如,在Maven项目的pom.xml文件中添加以下内容:
“`xml
com.jcraft
jsch
0.1.55
“`2. 在Java文件中导入JSch库的类。
“`java
import com.jcraft.jsch.*;
“`3. 创建一个JSch对象。
“`java
JSch ssh = new JSch();
“`4. 使用JSch对象创建一个SSH会话。
“`java
Session session = ssh.getSession(username, host, port);
“`其中,`username`是登录SSH服务器的用户名,`host`是SSH服务器的主机名或IP地址,`port`是SSH服务器的端口号(默认是22)。
5. 设置SSH会话的密码(或者使用其他身份验证方式,如密钥)。
“`java
session.setPassword(password);
“`其中,`password`是登录SSH服务器的密码。
6. 开启SSH会话。
“`java
session.connect();
“`7. 创建一个SSH通道。
“`java
Channel channel = session.openChannel(“exec”);
“`8. 设置SSH通道的命令。
“`java
((ChannelExec) channel).setCommand(command);
“`其中,`command`是要执行的Linux命令。
9. 设置SSH通道的输入和输出流。
“`java
channel.setInputStream(null);
((ChannelExec) channel).setErrStream(System.err);
InputStream in = channel.getInputStream();
“`10. 开启SSH通道。
“`java
channel.connect();
“`11. 读取SSH通道的输出结果。
“`java
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
“`12. 关闭SSH通道和会话。
“`java
channel.disconnect();
session.disconnect();
“`以上是在Java中使用JSch库调用SSH执行Linux命令的基本步骤。通过这种方式,您可以在Java中远程执行Linux命令,并获取命令的执行结果。
2年前 -
使用Java调用SSH执行Linux命令可以分为以下几个步骤:
1. 引入依赖
首先需要引入相关的依赖,可以使用JSch库。在Maven项目中,可以在pom.xml文件中添加以下依赖:
“`xml
com.jcraft
jsch
0.1.55
“`2. 创建SSH连接
使用JSch库,需要创建一个SSH连接对象,并设置连接的主机名、用户名和密码。例如:
“`java
String host = “YourSSHHost”;
String username = “YourSSHUsername”;
String password = “YourSSHPassword”;JSch jsch = new JSch();
Session session = jsch.getSession(username, host, 22);
session.setPassword(password);
session.setConfig(“StrictHostKeyChecking”, “no”);
session.connect();
“`3. 执行命令
通过SSH连接对象,可以创建一个Channel,并执行需要的命令。执行命令有两种方式:使用Shell或者使用SFTP。下面分别介绍这两种方式。使用Shell执行命令:
“`java
ChannelExec channelExec = (ChannelExec) session.openChannel(“exec”);
channelExec.setCommand(“YourLinuxCommand”);
channelExec.setInputStream(null);
channelExec.setErrStream(System.err);InputStream in = channelExec.getInputStream();
channelExec.connect();BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}channelExec.disconnect();
“`使用SFTP执行命令:
“`java
ChannelSftp channelSftp = (ChannelSftp) session.openChannel(“sftp”);
channelSftp.connect();channelSftp.cd(“YourRemoteDirectory”);
InputStream in = channelSftp.get(“YourRemoteFile”);BufferedReader reader = new BufferedReader(new InputStreamReader(in));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}channelSftp.disconnect();
“`4. 关闭连接
执行完毕后,需要关闭SSH连接:
“`java
session.disconnect();
“`以上就是使用Java调用SSH执行Linux命令的方法和操作流程。通过JSch库,我们可以方便地在Java程序中执行远程的Linux命令,并获取结果。
2年前