多個命令在我的node.js腳本,我需要使用sudo運行這兩個命令:的node.js執行使用sudo
execSync('sudo rsync -a ' + dir1 + " " + dir2);
execSync('sudo rm -Rf ' + dir1);
,但這項事業,它會要求輸入sudo密碼兩次; 除此之外,如果我輸入了錯誤的密碼,則腳本繼續而不再請求; 如何緩存密碼以避免被提示兩次,並在繼續之前等待提供正確的密碼?
多個命令在我的node.js腳本,我需要使用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
不爲空時,似乎引發異常。我會首先建議檢查命令的退出代碼,但該庫似乎沒有公開它。
太遲,也許但更換 ;由&&只有在rsync成功時才執行rm。這可以避免災難 –
好點,謝謝。它已被編輯。 –
您可以以root身份登錄並擁有權限(但不建議)。 – wkcamp
是的,但我需要使用sudo; –
那麼問題是,sudo的全部重點是給予給定的用戶,一個命令的超級用戶權限。未來的參考:更多背景sudo:http://stackoverflow.com/questions/26960665/whats-the-point-of-permissions-in-linux-if-anyone-can-do-a-sudo – wkcamp