hivessh
Version:
HiveSsh is an innovative library designed to streamline SSH2 connections and simplify task execution on Linux servers.
44 lines • 6.72 kB
JavaScript
export const unknownDistro = "unknown";
export const defaultOsRelease = {
distroName: unknownDistro,
distroVersion: unknownDistro,
meta: {}
};
export async function fetchOsRelease(sshHost) {
let stats = await sshHost.sftp.readdir("/etc");
stats = stats.filter((v) => v.filename.endsWith("-release"));
if (stats.length == 0) {
throw new Error("No '/etc/*-release' file found");
}
const meta = {};
for (const stat of stats) {
const value = "" + await sshHost.sftp.readFile(stat.path + "/" + stat.filename);
for (const varLine of value.split("\n")) {
const i = varLine.indexOf("=");
const key = varLine.slice(0, i);
if (key.length == 0) {
continue;
}
let value = varLine.slice(i + 1);
while (value.startsWith("\"") ||
value.startsWith("'")) {
value = value.slice(1);
}
while (value.endsWith("\"") ||
value.endsWith("'")) {
value = value.slice(0, -1);
}
meta[key] = value;
}
}
const name = (meta.NAME ?? meta.DISTRIB_ID ??
meta.DISTRO_ID ?? meta.ID ?? "unknown").toLowerCase();
const version = (meta.VERSION_ID ?? meta.DISTRIB_RELEASE ??
meta.DISTRO_RELEASE ?? meta.RELEASE ?? "unknown").toLowerCase();
return {
distroName: name,
distroVersion: version,
meta: meta
};
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiT3NSZWxlYXNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2Vzc2VudGlhbHMvT3NSZWxlYXNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU1BLE1BQU0sQ0FBQyxNQUFNLGFBQWEsR0FBRyxTQUFTLENBQUE7QUFRdEMsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQWM7SUFDdkMsVUFBVSxFQUFFLGFBQWE7SUFDekIsYUFBYSxFQUFFLGFBQWE7SUFDNUIsSUFBSSxFQUFFLEVBQUU7Q0FDWCxDQUFBO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxjQUFjLENBQ2hDLE9BQWdCO0lBRWhCLElBQUksS0FBSyxHQUFHLE1BQU0sT0FBTyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUE7SUFFOUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUE7SUFFNUQsSUFBSSxLQUFLLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsZ0NBQWdDLENBQUMsQ0FBQTtJQUNyRCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBRU4sRUFBRSxDQUFBO0lBRU4sS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUUsQ0FBQztRQUN2QixNQUFNLEtBQUssR0FBRyxFQUFFLEdBQUcsTUFBTSxPQUFPLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FDMUMsSUFBSSxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLFFBQVEsQ0FDbEMsQ0FBQTtRQUVELEtBQUssTUFBTSxPQUFPLElBQUksS0FBSyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ3RDLE1BQU0sQ0FBQyxHQUFHLE9BQU8sQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUE7WUFFOUIsTUFBTSxHQUFHLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFDL0IsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO2dCQUNsQixTQUFRO1lBQ1osQ0FBQztZQUVELElBQUksS0FBSyxHQUFHLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFBO1lBRWhDLE9BQ0ksS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUM7Z0JBQ3RCLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQ3ZCLENBQUM7Z0JBQ0MsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDMUIsQ0FBQztZQUVELE9BQ0ksS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ3BCLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEVBQ3JCLENBQUM7Z0JBQ0MsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7WUFDOUIsQ0FBQztZQUVELElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxLQUFLLENBQUE7UUFDckIsQ0FBQztJQUNMLENBQUM7SUFFRCxNQUFNLElBQUksR0FBRyxDQUNULElBQUksQ0FBQyxJQUFJLElBQUksSUFBSSxDQUFDLFVBQVU7UUFDNUIsSUFBSSxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsRUFBRSxJQUFJLFNBQVMsQ0FDekMsQ0FBQyxXQUFXLEVBQUUsQ0FBQTtJQUNmLE1BQU0sT0FBTyxHQUFHLENBQ1osSUFBSSxDQUFDLFVBQVUsSUFBSSxJQUFJLENBQUMsZUFBZTtRQUN2QyxJQUFJLENBQUMsY0FBYyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksU0FBUyxDQUNuRCxDQUFDLFdBQVcsRUFBRSxDQUFBO0lBRWYsT0FBTztRQUNILFVBQVUsRUFBRSxJQUFJO1FBQ2hCLGFBQWEsRUFBRSxPQUFPO1FBQ3RCLElBQUksRUFBRSxJQUFJO0tBQ2IsQ0FBQTtBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTc2hIb3N0IH0gZnJvbSBcIi4uL1NzaEhvc3QuanNcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSZWxlYXNlTWV0YSB7XG4gICAgW2tleTogc3RyaW5nXTogc3RyaW5nXG59XG5cbmV4cG9ydCBjb25zdCB1bmtub3duRGlzdHJvID0gXCJ1bmtub3duXCJcblxuZXhwb3J0IGludGVyZmFjZSBPc1JlbGVhc2Uge1xuICAgIGRpc3Ryb05hbWU6IHN0cmluZ1xuICAgIGRpc3Ryb1ZlcnNpb246IHN0cmluZ1xuICAgIG1ldGE6IFJlbGVhc2VNZXRhXG59XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0T3NSZWxlYXNlOiBPc1JlbGVhc2UgPSB7XG4gICAgZGlzdHJvTmFtZTogdW5rbm93bkRpc3RybyxcbiAgICBkaXN0cm9WZXJzaW9uOiB1bmtub3duRGlzdHJvLFxuICAgIG1ldGE6IHt9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaE9zUmVsZWFzZShcbiAgICBzc2hIb3N0OiBTc2hIb3N0XG4pOiBQcm9taXNlPE9zUmVsZWFzZT4ge1xuICAgIGxldCBzdGF0cyA9IGF3YWl0IHNzaEhvc3Quc2Z0cC5yZWFkZGlyKFwiL2V0Y1wiKVxuXG4gICAgc3RhdHMgPSBzdGF0cy5maWx0ZXIoKHYpID0+IHYuZmlsZW5hbWUuZW5kc1dpdGgoXCItcmVsZWFzZVwiKSlcblxuICAgIGlmIChzdGF0cy5sZW5ndGggPT0gMCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyAnL2V0Yy8qLXJlbGVhc2UnIGZpbGUgZm91bmRcIilcbiAgICB9XG5cbiAgICBjb25zdCBtZXRhOiB7XG4gICAgICAgIFtrZXk6IHN0cmluZ106IHN0cmluZ1xuICAgIH0gPSB7fVxuXG4gICAgZm9yIChjb25zdCBzdGF0IG9mIHN0YXRzKSB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gXCJcIiArIGF3YWl0IHNzaEhvc3Quc2Z0cC5yZWFkRmlsZShcbiAgICAgICAgICAgIHN0YXQucGF0aCArIFwiL1wiICsgc3RhdC5maWxlbmFtZVxuICAgICAgICApXG5cbiAgICAgICAgZm9yIChjb25zdCB2YXJMaW5lIG9mIHZhbHVlLnNwbGl0KFwiXFxuXCIpKSB7XG4gICAgICAgICAgICBjb25zdCBpID0gdmFyTGluZS5pbmRleE9mKFwiPVwiKVxuXG4gICAgICAgICAgICBjb25zdCBrZXkgPSB2YXJMaW5lLnNsaWNlKDAsIGkpXG4gICAgICAgICAgICBpZiAoa2V5Lmxlbmd0aCA9PSAwKSB7XG4gICAgICAgICAgICAgICAgY29udGludWVcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IHZhbHVlID0gdmFyTGluZS5zbGljZShpICsgMSlcblxuICAgICAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICAgICAgIHZhbHVlLnN0YXJ0c1dpdGgoXCJcXFwiXCIpIHx8XG4gICAgICAgICAgICAgICAgdmFsdWUuc3RhcnRzV2l0aChcIidcIilcbiAgICAgICAgICAgICkge1xuICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUuc2xpY2UoMSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgd2hpbGUgKFxuICAgICAgICAgICAgICAgIHZhbHVlLmVuZHNXaXRoKFwiXFxcIlwiKSB8fFxuICAgICAgICAgICAgICAgIHZhbHVlLmVuZHNXaXRoKFwiJ1wiKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgdmFsdWUgPSB2YWx1ZS5zbGljZSgwLCAtMSlcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbWV0YVtrZXldID0gdmFsdWVcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGNvbnN0IG5hbWUgPSAoXG4gICAgICAgIG1ldGEuTkFNRSA/PyBtZXRhLkRJU1RSSUJfSUQgPz9cbiAgICAgICAgbWV0YS5ESVNUUk9fSUQgPz8gbWV0YS5JRCA/PyBcInVua25vd25cIlxuICAgICkudG9Mb3dlckNhc2UoKVxuICAgIGNvbnN0IHZlcnNpb24gPSAoXG4gICAgICAgIG1ldGEuVkVSU0lPTl9JRCA/PyBtZXRhLkRJU1RSSUJfUkVMRUFTRSA/P1xuICAgICAgICBtZXRhLkRJU1RST19SRUxFQVNFID8/IG1ldGEuUkVMRUFTRSA/PyBcInVua25vd25cIlxuICAgICkudG9Mb3dlckNhc2UoKVxuXG4gICAgcmV0dXJuIHtcbiAgICAgICAgZGlzdHJvTmFtZTogbmFtZSxcbiAgICAgICAgZGlzdHJvVmVyc2lvbjogdmVyc2lvbixcbiAgICAgICAgbWV0YTogbWV0YVxuICAgIH1cbn0iXX0=