2010-10-20 16 views
27

मैं एक बैश इंस्टॉलर स्क्रिप्ट बना रहा हूं जो ओएसएक्स और लिनक्स दोनों के लिए कुछ पुस्तकालयों को संकलित और स्थापित करता है। क्योंकि मेरी स्क्रिप्ट में कुछ कमांड ("इंस्टॉल करें", "एपीटी-इंस्टाल", "पोर्ट इंस्टाल" इत्यादि) को सूडो की आवश्यकता होती है, मुझे उपयोगकर्ता को पासवर्ड की आपूर्ति करने की आवश्यकता होती है।बश स्क्रिप्ट्स को सुडो पासवर्ड की आवश्यकता होती है

वर्तमान में उपयोगकर्ता को जब भी पहला सूडो कमांड निष्पादित करने वाला होता है, तो पासवर्ड के लिए पूछा जाता है, लेकिन क्योंकि यह अक्सर संकलन चरण के बाद होता है, स्क्रिप्ट शुरू करने और पासवर्ड दर्ज करने के बीच हमेशा कुछ समय होता है।

मैं स्क्रिप्ट की शुरुआत में पासवर्ड प्रविष्टि + चेक रखना चाहता हूं। इसके अलावा मैं उत्सुक हूं कि यह सिस्टम पुस्तकालयों को स्थापित करने का वास्तव में एक अच्छा तरीका है।

वैकल्पिक रूप से मैं स्थानीय सैंडबॉक्स स्थान में पुस्तकालयों को स्थापित कर सकता हूं, जिसके लिए सुडो की आवश्यकता नहीं होती है, लेकिन फिर मुझे एपीटी-गेट और मैकपोर्ट्स को बताना होगा कि उनके पुस्तकालयों को अन्यथा डिफ़ॉल्ट/usr/local// opt/local, और मुझे यकीन नहीं है कि यह कैसे करें और न ही यह एक चालाक विचार है।

उत्तर

51

पासवर्ड प्राप्त करने के लिए, बस स्क्रिप्ट की शुरुआत में sudo echo "Thanks." डाल दें।

लेकिन मैं इस समाधान पसंद करेंगे:

if [[ $UID != 0 ]]; then 
    echo "Please run this script with sudo:" 
    echo "sudo $0 $*" 
    exit 1 
fi 
+0

साफ़ और सरल। धन्यवाद! –

+0

यदि आप सीधे 'सूडो' कर सकते हैं तो सूडो के लिए 'echo' क्यों? –

+0

@TobiasKienzler: क्योंकि सवाल इसके लिए पूछा गया था। –

4

जो लोग स्वीकार किए जाते हैं के पहले भाग (केवल स्क्रिप्ट जहां जरूरत के भीतर sudo का उपयोग करके जोखिम को सीमित करने) पूरी स्क्रिप्ट तरक्की नहीं करना चाहती के लिए उत्तर sudo echo "Thanks" काम करता है लेकिन स्क्रिप्ट से बाहर निकलने के द्वारा सूडो पासवर्ड विफलता का जवाब नहीं देगा। इसे पूरा करने के स्क्रिप्ट कि sudo आदेशों में शामिल हैं और इससे पहले कि यह

if [[ ! $(sudo echo 0) ]]; then exit; fi 

चेतावनी के साथ शुरू कर सकता है प्रयोग किया जाता है sudo पहुँच सुनिश्चित करना चाहते हैं कि आप एक sudoers टाइमआउट के अस्तित्व कि अपनी स्क्रिप्ट की अवधि तक चलेगा पर भरोसा कर रहे हैं शेष संकेतों को दबाने के लिए।

संबंधित मुद्दे