mirror of
https://github.com/YuzuZensai/Termix.git
synced 2026-09-13 10:49:03 +00:00
43 lines
1.1 KiB
TypeScript
43 lines
1.1 KiB
TypeScript
import type { Client } from "ssh2";
|
|||
|
|
|
||
|
|
export function execCommand(
|
||
|
|
client: Client,
|
||
|
|
command: string,
|
||
|
|
): Promise<{
|
||
|
|
stdout: string;
|
||
|
|
stderr: string;
|
||
|
|
code: number | null;
|
||
|
|
}> {
|
||
|
|
return new Promise((resolve, reject) => {
|
||
|
|
client.exec(command, { pty: false }, (err, stream) => {
|
||
|
|
if (err) return reject(err);
|
||
|
|
let stdout = "";
|
||
|
|
let stderr = "";
|
||
|
|
let exitCode: number | null = null;
|
||
|
|
stream
|
||
|
|
.on("close", (code: number | undefined) => {
|
||
|
|
exitCode = typeof code === "number" ? code : null;
|
||
|
|
resolve({ stdout, stderr, code: exitCode });
|
||
|
|
})
|
||
|
|
.on("data", (data: Buffer) => {
|
||
|
|
stdout += data.toString("utf8");
|
||
|
|
})
|
||
|
|
.stderr.on("data", (data: Buffer) => {
|
||
|
|
stderr += data.toString("utf8");
|
||
|
|
});
|
||
|
|
});
|
||
|
|
});
|
||
|
|
}
|
||
|
|
|
||
|
|
export function toFixedNum(
|
||
|
|
n: number | null | undefined,
|
||
|
|
digits = 2,
|
||
|
|
): number | null {
|
||
|
|
if (typeof n !== "number" || !Number.isFinite(n)) return null;
|
||
|
|
return Number(n.toFixed(digits));
|
||
|
|
}
|
||
|
|
|
||
|
|
export function kibToGiB(kib: number): number {
|
||
|
|
return kib / (1024 * 1024);
|
||
|
|
}
|