node.js用sudo执行多个命令

时间:2015-01-02 23:43:58

标签: node.js sudo

在我的node.js脚本中,我需要使用sudo运行这两个命令:

execSync('sudo rsync -a ' + dir1 + " " + dir2);
execSync('sudo rm -Rf ' + dir1);

但是这会导致它要求sudo密码两次; 除此之外,如果我输错了密码,脚本会继续运行而不再请求密码; 如何缓存密码以避免被提示两次,并等到提供正确的密码后再继续?

1 个答案:

答案 0 :(得分:2)

this piece of advice之后,我还建议在同一sudo命令下执行这两个命令。

execSync('sudo -- sh -c \'rsync -a ' + dir1 + ' ' + dir2 + ' && rm -Rf ' + dir1 + '\'');

检测是否发生错误可以从execSync本身完成。当stderr不为空时,似乎抛出异常。我首先建议检查命令的退出代码,但该库似乎没有暴露它。