node.js 使用 sudo 执行多个命令

node.js execute multiple commands with sudo

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

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

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

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

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

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