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

Cer*_*ler 1 sudo node.js

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

execSync('sudo rsync -a ' + dir1 + " " + dir2);
execSync('sudo rm -Rf ' + dir1);
Run Code Online (Sandbox Code Playgroud)

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

E_n*_*ate 5

根据这条建议,我还建议在同一命令下执行这两个命令sudo

execSync('sudo -- sh -c \'rsync -a ' + dir1 + ' ' + dir2 + ' && rm -Rf ' + dir1 + '\'');
Run Code Online (Sandbox Code Playgroud)

可以通过execSync本身来检测是否发生错误。看来当stderris不为空​​时会抛出异常。我首先建议检查命令的退出代码,但该库似乎没有公开它。

  • 也许为时已晚,但请更换 ; 仅当 rsync 成功时,才通过 && 执行 rm。这样才能避免一场灾难 (4认同)