处理ssh密码中带有特殊字符的情况
This commit is contained in:
parent
6e9d521dc5
commit
a945af0d35
@ -60,7 +60,7 @@ public class DIYImageExecuteCommandWorker extends SshWorker {
|
||||
|
||||
//获取机器
|
||||
MachineInfo machineInfoDO = this.getMachineInfoService().getById(machineId);
|
||||
statusCode = shell(machineInfoDO,"1qaz!QAZ",taskLog,
|
||||
statusCode = shell(machineInfoDO,"Hnidc@0626cn!@#zyx",taskLog,
|
||||
"echo \"自定义镜像执行命令\"",
|
||||
commandScript
|
||||
);
|
||||
|
@ -39,7 +39,7 @@ import java.util.*;
|
||||
* @Description:
|
||||
*/
|
||||
@Slf4j
|
||||
@Plugin(taskType = "sbom")
|
||||
@Plugin(taskType = "test")
|
||||
public class ScaSbomWorker extends HttpWorker{
|
||||
|
||||
private static final int POLLING_INTERVAL = 5000; // 轮询间隔,单位:毫秒
|
||||
|
@ -9,6 +9,7 @@ import cn.hutool.extra.ssh.JschUtil;
|
||||
import com.jcraft.jsch.ChannelShell;
|
||||
import com.jcraft.jsch.JSchException;
|
||||
import com.jcraft.jsch.Session;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.List;
|
||||
@ -21,6 +22,7 @@ import java.util.concurrent.TimeUnit;
|
||||
* @Date 2022/6/22 15:43
|
||||
* @Version 1.0
|
||||
**/
|
||||
@Slf4j
|
||||
public class SshCommand implements SshClient {
|
||||
|
||||
private static final int BUFF_SIZE = 1024 * 8; // 8KB
|
||||
@ -180,8 +182,11 @@ public class SshCommand implements SshClient {
|
||||
String realCmd;
|
||||
if (sudoPassword != null && !sudoPassword.isEmpty()) {
|
||||
// 单引号转义,防止脚本内容出错
|
||||
String safeCmd = cmd.replace("'", "'\\''");
|
||||
realCmd = "echo " + sudoPassword + " | sudo -S bash -c '" + safeCmd + "'";
|
||||
String safeCmd = cmd.replace("'", "\\'");
|
||||
realCmd = "echo '" + sudoPassword + "' | sudo -S bash -c '" + safeCmd + "'";
|
||||
log.info("================管理员权限执行命令{}",realCmd);
|
||||
log.info("================原命令{}",safeCmd);
|
||||
log.info("");
|
||||
} else {
|
||||
realCmd = cmd;
|
||||
}
|
||||
|
File diff suppressed because one or more lines are too long
Loading…
x
Reference in New Issue
Block a user