在我的node.js脚本中,我需要使用sudo运行以下两个命令:
execSync('sudo rsync -a ' + dir1 + " " + dir2); execSync('sudo rm -Rf ' + dir1);
但这导致它将两次询问sudo密码; 除此之外,如果我输入了错误的密码,脚本将继续运行而无需再次请求; 如何缓存密码以避免两次被提示,并等到提供正确的密码后再继续?
遵循这一建议 ,我还建议仅在同一sudo命令下执行两个命令。
sudo
execSync('sudo -- sh -c \'rsync -a ' + dir1 + ' ' + dir2 + ' && rm -Rf ' + dir1 + '\'');
可以通过execSync本身来检测是否发生错误。 似乎在stderr不为空时引发异常。 我本来会建议检查命令的退出代码,但是该库似乎没有公开它。
stderr