2013-01-15 34 views
11

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

तो, मेरे सवाल जब sudo कैसे मैं वर्तमान उपयोगकर्ता के रूप में उप आदेश पर अमल और उसके बाद sudo के साथ स्क्रिप्ट के शेष के लिए जारी करने के साथ एक खोल स्क्रिप्ट पर कार्य करते है।

उपयोगकर्ता को फिर से अपना पासवर्ड दर्ज करने के लिए संकेत देना वास्तव में व्यावहारिक नहीं है क्योंकि स्क्रिप्ट को निष्पादित करने में वास्तव में लंबा समय लगता है और इसके लिए तत्काल 5-10 मिनट की प्रतीक्षा करने की आवश्यकता होगी।

उत्तर

12

स्क्रिप्ट के भीतर से sudo के माध्यम से उप-आदेश चलाने का सबसे आसान तरीका है। साथ $ SUDO_USER द्वारा प्राप्त किया जा सकता को चलाने के लिए प्रयोक्ता आईडी (sudo env के उत्पादन को देखने):

sudo -u $SUDO_USER ./exec_as_normal_user.sh 
+0

धन्यवाद। वास्तव में मुझे क्या चाहिए! – RayViljoen

+0

क्या कोई अन्य बैश स्क्रिप्ट फ़ाइल की आवश्यकता के बिना ऐसा करने का कोई तरीका है? सर्वर लॉन्च करते समय एडब्ल्यूएस केवल एक फ़ाइल को अटैचमेंट के रूप में अनुमति देता है –

0

, खोल

sudo -u $USER_NAME bash

का उपयोग कर इन्स्तांत और फोन करके खोल स्क्रिप्ट निष्पादित

./program.sh