71 lines
1.5 KiB
TypeScript
71 lines
1.5 KiB
TypeScript
import grabCoderankSSHPrefix from "./grab-ssh-prefix";
|
|
import { exec, execSync, type ExecSyncOptions } from "child_process";
|
|
import debugLog from "@moduletrace/datasquirel/dist/package-shared/utils/logging/debug-log";
|
|
|
|
type Param = {
|
|
cmd: string;
|
|
debug?: boolean;
|
|
server?: any;
|
|
options?: ExecSyncOptions;
|
|
detached?: boolean;
|
|
};
|
|
|
|
export default function execRawSSH({
|
|
cmd,
|
|
debug,
|
|
server,
|
|
options,
|
|
detached,
|
|
}: Param): string | undefined {
|
|
function debugFn(log: any, label?: string) {
|
|
debugLog({
|
|
log: log,
|
|
label: label,
|
|
title: "execRawSSH",
|
|
addTime: true,
|
|
});
|
|
}
|
|
|
|
try {
|
|
let cmdPrefix = grabCoderankSSHPrefix();
|
|
|
|
let finalCmd = `${cmdPrefix}`;
|
|
|
|
if (server) {
|
|
finalCmd += ` ${server.username}@${server.ip}`;
|
|
}
|
|
|
|
finalCmd += ` << 'CDREXEC' \n\
|
|
${cmd}\n\
|
|
CDREXEC`;
|
|
|
|
if (debug) {
|
|
debugFn(finalCmd, "finalCmd");
|
|
}
|
|
|
|
const str = detached
|
|
? ""
|
|
: execSync(finalCmd, {
|
|
stdio: "pipe",
|
|
...options,
|
|
encoding: "utf-8",
|
|
});
|
|
|
|
if (detached) {
|
|
exec(finalCmd);
|
|
}
|
|
|
|
if (debug) {
|
|
debugFn(str, "commandResult");
|
|
}
|
|
|
|
return str.trim();
|
|
} catch (error: any) {
|
|
if (debug) {
|
|
debugFn(error.message, "Raw SSh Error");
|
|
}
|
|
|
|
return undefined;
|
|
}
|
|
}
|