dsql-admin/dsql-app/docker/web-socket/app/ssh/exec.ts

52 lines
1.3 KiB
TypeScript
Raw Normal View History

2025-02-16 16:12:40 +00:00
import { Client } from "ssh2";
type Param = {
ssh: Client;
cmd: string;
debug?: boolean;
};
export default async function execSSH({
ssh,
cmd,
debug,
}: Param): Promise<string | undefined> {
if (!ssh) {
console.log(`No SSH object passed into execSSH function`);
return undefined;
}
return new Promise((resolve) => {
let finalData = "";
let stdErrData = "";
ssh.exec(cmd, (err, stream) => {
if (err) throw err;
stream
.on("close", (code?: number, signal?: string) => {
if (code || signal) {
resolve(undefined);
} else {
resolve(finalData);
}
})
.on("data", (data: any) => {
finalData += data;
})
.stderr.on("data", (data) => {
stdErrData += data;
})
.on("close", () => {
if (stdErrData.match(/./)) {
if (debug) {
console.log("SSH Error code:", stdErrData);
}
resolve(undefined);
}
});
});
});
}