java登录linux并执行命令

fiy 其他 55

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    要实现在Java中登录Linux并执行命令,可以使用Java的SSH库来实现。下面是一个示例代码:

    “`java
    import com.jcraft.jsch.*;

    public class SSHExample {
    public static void main(String[] args) {
    String host = “your_host”;
    int port = 22;
    String username = “your_username”;
    String password = “your_password”;
    String command = “your_command”;

    try {
    JSch jsch = new JSch();
    Session session = jsch.getSession(username, host, port);
    session.setPassword(password);
    session.setConfig(“StrictHostKeyChecking”, “no”);
    session.connect();

    Channel channel = session.openChannel(“exec”);
    ((ChannelExec) channel).setCommand(command);
    channel.setInputStream(null);
    ((ChannelExec) channel).setErrStream(System.err);

    InputStream input = channel.getInputStream();
    channel.connect();

    byte[] buffer = new byte[1024];
    StringBuilder output = new StringBuilder();

    while (true) {
    while (input.available() > 0) {
    int bytesRead = input.read(buffer);
    output.append(new String(buffer, 0, bytesRead));
    }

    if (channel.isClosed()) {
    if (input.available() > 0) {
    continue;
    }
    output.append(“Exit status: “).append(channel.getExitStatus());
    break;
    }

    try {
    Thread.sleep(1000);
    } catch (InterruptedException ignored) {}
    }

    System.out.println(output.toString());

    channel.disconnect();
    session.disconnect();
    } catch (JSchException | IOException e) {
    e.printStackTrace();
    }
    }
    }
    “`

    在上面的代码中,需要替换以下变量:
    1. host:Linux服务器的IP地址或主机名。
    2. port:SSH的端口,默认为22。
    3. username:登录Linux的用户名。
    4. password:登录Linux的密码。
    5. command:需要执行的命令。

    该代码通过JSch库创建一个SSH会话,然后使用`ChannelExec`通道执行命令。最后,读取命令执行的输出并打印在控制台上。

    需要注意的是,使用SSH登录时需要确保目标Linux服务器已开启SSH服务,并且Java项目的依赖中包含`com.jcraft.jsch`的库。

    以上是在Java中登录Linux并执行命令的示例代码,可以根据实际需求进行修改和完善。

    2年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    要通过Java登录Linux并执行命令,你可以使用SSH(Secure Shell)协议。SSH协议允许安全地远程登录到Linux服务器,并执行命令。

    以下是通过Java登录Linux并执行命令的步骤:

    1. 导入必要的Java库:你需要导入jsch库,这是一个用于实现SSH协议的库。你可以将其作为Maven依赖项添加到你的项目中。

    “`

    com.jcraft
    jsch
    0.1.54

    “`

    2. 建立SSH连接:你需要创建一个SSH连接,并提供登录信息(主机名、用户名和密码)。

    “`java
    import com.jcraft.jsch.*;

    public class SSHExample {

    public static void main(String[] args) {
    String hostname = “your_hostname”;
    String username = “your_username”;
    String password = “your_password”;

    JSch jsch = new JSch();
    Session session = null;
    try {
    session = jsch.getSession(username, hostname, 22);
    session.setPassword(password);
    session.setConfig(“StrictHostKeyChecking”, “no”);
    session.connect();
    System.out.println(“Connected”);
    } catch (JSchException e) {
    e.printStackTrace();
    }
    }
    }
    “`

    3. 执行命令:一旦建立了连接,你就可以使用`session`对象来执行Linux命令。

    “`java
    import com.jcraft.jsch.*;

    public class SSHExample {

    public static void main(String[] args) {
    String hostname = “your_hostname”;
    String username = “your_username”;
    String password = “your_password”;
    String command = “your_command”;

    JSch jsch = new JSch();
    Session session = null;
    try {
    session = jsch.getSession(username, hostname, 22);
    session.setPassword(password);
    session.setConfig(“StrictHostKeyChecking”, “no”);
    session.connect();
    System.out.println(“Connected”);

    Channel channel = session.openChannel(“exec”);
    ((ChannelExec) channel).setCommand(command);
    channel.setInputStream(null);
    ((ChannelExec) channel).setErrStream(System.err);

    InputStream in = channel.getInputStream();
    channel.connect();

    StringBuilder result = new StringBuilder();
    byte[] tmp = new byte[1024];
    while (true) {
    while (in.available() > 0) {
    int i = in.read(tmp, 0, 1024);
    if (i < 0) break; result.append(new String(tmp, 0, i)); } if (channel.isClosed()) { if (in.available() > 0) continue;
    System.out.println(“Exit status: ” + channel.getExitStatus());
    break;
    }
    }
    System.out.println(result.toString());
    channel.disconnect();
    session.disconnect();
    } catch (JSchException | IOException e) {
    e.printStackTrace();
    }
    }
    }
    “`

    以上就是通过Java登录Linux并执行命令的步骤。请确保在使用时替换`your_hostname`、`your_username`、`your_password`和`your_command`为实际的主机名、用户名、密码和要执行的命令。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    要在java中登录Linux并执行命令,可以使用Java的ProcessBuilder类来创建一个新的进程并执行命令。下面是一个示例代码,演示了如何在Java中实现此功能。

    “`java
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;

    public class LinuxCommandExecutor {

    public static void main(String[] args) {
    String command = “ls -l”; // 需要执行的命令

    try {
    ProcessBuilder pb = new ProcessBuilder(“ssh”, “username@hostname”, command);
    pb.redirectErrorStream(true);
    Process process = pb.start();

    // 读取命令执行结果
    InputStream inputStream = process.getInputStream();
    BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
    String line;
    while ((line = reader.readLine()) != null) {
    System.out.println(line);
    }

    int exitCode = process.waitFor();
    System.out.println(“Command executed with exit code ” + exitCode);
    } catch (IOException | InterruptedException e) {
    e.printStackTrace();
    }
    }
    }
    “`

    上面的代码使用了ProcessBuilder类来创建新的进程并执行命令。在ProcessBuilder的构造函数中,我们传递了一个包含用户名、主机名和要执行的命令的参数列表。然后,我们调用start()方法来启动进程。

    在代码的其余部分,我们获取了进程的输入流并将其传递给BufferedReader类来读取命令执行结果。然后,我们逐行打印输出结果。

    最后,我们调用了process.waitFor()方法来等待命令执行完成,并获取命令的退出码。退出码为0表示命令执行成功。

    需要注意的是,上面的代码使用了ssh命令来登录Linux。你需要将”username@hostname”替换为实际的用户名和主机名。此外,你也可以根据需要修改command变量来执行不同的命令。

    总结起来,要在Java中登录Linux并执行命令,你可以使用ProcessBuilder类来创建新进程,并通过输入流来读取命令执行结果。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部