具有异步值的 Ssh 连接
Ssh conection with async value
我需要获取 cat 值 txt return 并将其传递给另一个函数,但目前在 try catch 和 promise pending 中出现错误,我该怎么做?
var SSH2Shell = require("ssh2shell");
async function sshFunction() {
let finalList = [];
try {
var host = {
server: {
host: "xxxxxxxxxxxx",
userName: "xxxxxxxxxx",
password: "xxxxxxx",
},
commands: [
"sudo /usr/bin/rootsh -i -u root",
"cd ..; cd u01/scripts/; cat saida.txt",
],
};
finalList.push(
(result = await SSH2Shell(host)),
(callback = function (sessionText) {
let list = [];
list.push(sessionText);
return list; // Return this call back
})
);
} catch {
console.log("error");
}
let resultList = await Promise.all(finalList);
return resultList;
}
var test = sshFunction();
console.log(test);
结果:
error
Promise { <pending> }
async function sshFunction() {
return new Promise(async (resolve, reject) => {
var host;
host = {
server: {
host: "xxx.xxx.xx.xx",
port: "xx",
userName: "",
password: "",
passPhrase: "",
privateKey: fs.readFileSync(`./xx.cer`),
},
commands: ["echo $(pwd)", "ls -l"],
};
SSH = new SSH2Shell(host);
SSH.connect((sessionText) => {
const data = sessionText;
resolve(data);
});
});
}
我需要获取 cat 值 txt return 并将其传递给另一个函数,但目前在 try catch 和 promise pending 中出现错误,我该怎么做?
var SSH2Shell = require("ssh2shell");
async function sshFunction() {
let finalList = [];
try {
var host = {
server: {
host: "xxxxxxxxxxxx",
userName: "xxxxxxxxxx",
password: "xxxxxxx",
},
commands: [
"sudo /usr/bin/rootsh -i -u root",
"cd ..; cd u01/scripts/; cat saida.txt",
],
};
finalList.push(
(result = await SSH2Shell(host)),
(callback = function (sessionText) {
let list = [];
list.push(sessionText);
return list; // Return this call back
})
);
} catch {
console.log("error");
}
let resultList = await Promise.all(finalList);
return resultList;
}
var test = sshFunction();
console.log(test);
结果:
error
Promise { <pending> }
async function sshFunction() {
return new Promise(async (resolve, reject) => {
var host;
host = {
server: {
host: "xxx.xxx.xx.xx",
port: "xx",
userName: "",
password: "",
passPhrase: "",
privateKey: fs.readFileSync(`./xx.cer`),
},
commands: ["echo $(pwd)", "ls -l"],
};
SSH = new SSH2Shell(host);
SSH.connect((sessionText) => {
const data = sessionText;
resolve(data);
});
});
}