java执行linux命令ssh

不及物动词 其他 131

回复

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

    在Java中执行Linux命令ssh需要使用到Java的ProcessBuilder类来创建一个新的进程,并将命令行命令传递给该进程进行执行。

    下面是一个简单的示例代码:

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

    public class SSHCommandExecutor {
    public static void main(String[] args) {
    executeCommand(“ssh user@hostname command”);
    }

    public static void executeCommand(String command) {
    try {
    ProcessBuilder pb = new ProcessBuilder(“bash”, “-c”, command);
    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 e) {
    e.printStackTrace();
    } catch (InterruptedException e) {
    e.printStackTrace();
    }
    }
    }
    “`

    上面的代码中,函数executeCommand接收一个要执行的命令作为参数,并使用ProcessBuilder类创建一个新的进程。然后从该进程中获取输出流并打印出来。最后获取命令执行的退出码,以判断命令是否执行成功。

    注意:在执行这段代码时,需要确保机器上已经安装了ssh工具,并且可以正常连接到远程服务器。

    希望这个示例对你有帮助!

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

    要在Java中执行Linux命令ssh,可以使用Java的`ProcessBuilder`类来启动一个新的进程。具体步骤如下:

    1. 导入`java.lang.ProcessBuilder`类。

    2. 使用`ProcessBuilder`类创建一个新的进程,并指定要执行的命令。例如,要执行`ssh`命令,可以使用以下代码:

    “`java
    ProcessBuilder processBuilder = new ProcessBuilder(“ssh”, “user@host”, “command”);
    “`

    其中,`user@host`是远程主机的用户名和主机名,`command`是要执行的命令。

    3. 可以设置进程的工作目录和环境变量,如果需要的话。

    “`java
    processBuilder.directory(new File(“path/to/working/directory”));
    processBuilder.environment().put(“ENV_VAR_NAME”, “value”);
    “`

    4. 启动进程,并获取其输入流、输出流和错误流。

    “`java
    Process process = processBuilder.start();
    InputStream input = process.getInputStream();
    InputStream error = process.getErrorStream();
    OutputStream output = process.getOutputStream();
    “`

    5. 可以使用输入流向远程主机发送输入。

    “`java
    output.write(“input”.getBytes());
    “`

    6. 使用输出流和错误流读取远程主机的输出和错误信息。

    “`java
    BufferedReader reader = new BufferedReader(new InputStreamReader(input));
    String line;
    while ((line = reader.readLine()) != null) {
    System.out.println(line);
    }
    “`

    7. 使用`process.waitFor()`等待进程执行完毕,并获取进程的退出状态。

    “`java
    int exitCode = process.waitFor();
    System.out.println(“Exit code: ” + exitCode);
    “`

    注意:在执行`ssh`命令时,可能需要配置免密登录或使用密码进行登录。如果使用密码登录,可以使用`expect`工具来模拟交互式输入密码的过程,并将其与`ssh`命令结合起来执行。

    此外,为了安全起见,建议谨慎处理用户输入,并使用适当的身份验证机制来验证远程主机的身份。

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

    在Java中执行Linux命令ssh,可以使用Java的ProcessBuilder类来实现。ProcessBuilder类提供了启动和管理系统进程的方法,可以通过它来执行命令并获取命令的输出。

    以下是一个Java程序示例,展示如何使用ProcessBuilder执行ssh命令:

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

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

    try {
    // 构建命令
    String[] cmd = {
    “/bin/bash”,
    “-c”,
    “sshpass -p ” + password + ” ssh ” + username + “@” + hostname + ” \”your_command\””
    };

    // 创建进程构建器
    ProcessBuilder pb = new ProcessBuilder(cmd);

    // 启动进程
    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, exit code: ” + exitCode);

    } catch (IOException | InterruptedException e) {
    e.printStackTrace();
    }
    }
    }
    “`

    上述代码中,需要替换的变量为`your_username`、`your_password`、`your_hostname`和`your_command`。`your_username`和`your_password`为登录Linux主机的用户名和密码,`your_hostname`为Linux主机的IP地址或主机名,`your_command`为要执行的Linux命令。

    需要注意的是,在执行ssh命令时,如果密码包含特殊字符,需要进行转义。上述代码使用了`sshpass`命令,并通过其`-p`选项来指定密码。

    执行上述Java程序,将会在控制台输出命令的执行结果。同时,该程序会等待命令执行完毕,并输出命令的退出码。如果退出码为0,则表示命令执行成功,否则表示命令执行失败。

    需要注意的是,为了能够执行ssh命令,需要确保Linux主机上已经安装了OpenSSH服务,并且支持远程登录。

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

400-800-1024

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

分享本页
返回顶部