在Java中使用JSch执行Shell命令时,可以使用ProcessBuilder来执行Shell命令。为了处理密码中的特殊字符$,可以使用单引号将整个命令字符串包裹起来。以下是一个示例代码:

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 command = "exp ly_cloud_xtgl/ly$_cloud_xtgl@192.168.35.203:1521/orcl file=/tmp/backup/1691633904031.dmp log=/tmp/backup/1691633904031.log statistics=none";

        String[] commandArray = {"/bin/bash", "-c", "'" + command + "'"};

        try {
            ProcessBuilder processBuilder = new ProcessBuilder(commandArray);
            Process process = processBuilder.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("Exit code: " + exitCode);
        } catch (IOException | InterruptedException e) {
            e.printStackTrace();
        }
    }
}

在上面的示例中,我们使用ProcessBuilder创建一个进程,然后将命令字符串作为参数传递给/bin/bash -c来执行。命令的输出结果可以通过进程的InputStream获取,并使用BufferedReader逐行读取输出结果。最后,通过调用process.waitFor()等待命令执行完成,并获取命令的退出码

exp ly_cloud_xtglly$_cloud_xtgl192168352031521orcl file=tmpbackup1691633904031dmp log=tmpbackup1691633904031log statistics=none这个oracle exp备份导出命令怎么使用java JSch #!binbash 执行密码存在$特殊符号需要进行处理

原文地址: https://www.cveoy.top/t/topic/izpj 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录