2015-01-02 81 views
0

多個命令在我的node.js腳本,我需要使用sudo運行這兩個命令:的node.js執行使用sudo

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

,但這項事業,它會要求輸入sudo密碼兩次; 除此之外,如果我輸入了錯誤的密碼,則腳本繼續而不再請求; 如何緩存密碼以避免被提示兩次,並在繼續之前等待提供正確的密碼?

+1

您可以以root身份登錄並擁有權限(但不建議)。 – wkcamp

+0

是的,但我需要使用sudo; –

+0

那麼問題是,sudo的全部重點是給予給定的用戶,一個命令的超級用戶權限。未來的參考:更多背景sudo:http://stackoverflow.com/questions/26960665/whats-the-point-of-permissions-in-linux-if-anyone-can-do-a-sudo – wkcamp

回答

1

跟着this piece of advice,我也建議在同一個sudo命令下執行這兩個命令。

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

檢測是否發生錯誤可以從execSync本身來完成。當stderr不爲空時,似乎引發異常。我會首先建議檢查命令的退出代碼,但該庫似乎沒有公開它。

+0

太遲,也許但更換 ;由&&只有在rsync成功時才執行rm。這可以避免災難 –

+1

好點,謝謝。它已被編輯。 –