如何设置SSH Exec node.js错误超时
在我的node js脚本中,我使用远程连接通过ssh exec在RPI ssh上运行脚本, 有时脚本失败,需要重新启动系统,为了让系统恢复,我需要等待2分钟 我尝试了下一件事: 运行脚本() 等待睡眠(60000) 但是脚本一直在运行,线程没有等待2分钟 我很高兴能得到一些帮助,因为我在重新启动时尝试了许多调用runScript的方法如何设置SSH Exec node.js错误超时,node.js,Node.js,在我的node js脚本中,我使用远程连接通过ssh exec在RPI ssh上运行脚本, 有时脚本失败,需要重新启动系统,为了让系统恢复,我需要等待2分钟 我尝试了下一件事: 运行脚本() 等待睡眠(60000) 但是脚本一直在运行,线程没有等待2分钟 我很高兴能得到一些帮助,因为我在重新启动时尝试了许多调用runScript的方法 您不需要setTimeout,在重新启动时调用runScript函数function@virender尼赫拉,没有任何超时或睡眠?运行脚本本身并不是一个承诺,所以
您不需要setTimeout,在重新启动时调用runScript函数function@virender尼赫拉,没有任何超时或睡眠?运行脚本本身并不是一个承诺,所以每次我使用它来等待它在1分钟内完成时,我都必须使用se sleep(60000)。当我这样做时,sudo重新启动ssh是否会失去连接?另外,这两个函数都运行并且不会使主脚本停止,因此这意味着在我调用runScript()之后;睡眠(60);还有一个错误,需要重新启动主脚本将在60秒后继续执行操作。如果使用sudo reboot,则会正常工作,然后服务器会断开连接并在2分钟后重新启动。因此,当系统重新启动时,nodeJs队列也被清除,并且您设置的超时无法工作,在这种情况下,只需在文件或数据库中存储一个标志,在重新启动后启动节点服务器时,检查文件/db if并运行脚本。我使用了一个标志来重新启动并延迟线程,它就可以工作了!非常感谢。
function runScript() {
let exec = require('ssh-exec');
let v_host = '';
let ssh = exec('sudo RunScript', {
user: 'user',
host: '0.0.0.0',
password: 'password'
});
ssh.pipe(process.stdout, function (data) {
console.log("8started");
console.log(data);
});
ssh.on('error', function (err) {
console.log("\n\nREBOOT\n\n");
reboot();
console.log("time out on");
setTimeout(runScript, 120000);
});
}
async function reboot() {
let exec = require('ssh-exec');
let ssh = exec('sudo reboot', {
user: 'user',
host: ip,
password: 'password'
});
ssh.pipe(process.stdout, function (data) {
console.log(data);
});
ssh.on('error', function (err) {
console.log(err);
});
function runScript() {
let exec = require('ssh-exec');
let v_host = '';
let ssh = exec('sudo RunScript', {
user: 'user',
host: '0.0.0.0',
password: 'password'
});
ssh.pipe(process.stdout, function (data) {
console.log("8started");
console.log(data);
});
ssh.on('error', function (err) {
console.log("\n\nREBOOT\n\n");
reboot();
});
}
async function reboot() {
let exec = require('ssh-exec');
let ssh = exec('sudo reboot', {
user: 'user',
host: ip,
password: 'password'
});
ssh.pipe(process.stdout, function (data) {
console.log(data);
runScript()
});
ssh.on('error', function (err) {
console.log(err);
});