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

问题描述 投票:0回答:1

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

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

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

node.js sudo
1个回答
2
投票

遵循这一建议 ,我还建议仅在同一sudo命令下执行两个命令。

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

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

© www.soinside.com 2019 - 2024. All rights reserved.