/ / शेल स्क्रिप्ट में रन कमांडो - लाइनक्स, बैश, शेल

शेल स्क्रिप्ट में sudo कमांड चलाएं - लिनक्स, बैश, खोल

मैंने इस तरह से एक शेल स्क्रिप्ट लिखी

#!/bin/bash

sudo mkdir /var/www/html/test
sudo cp ./index.html /var/www/html/test/index.html
echo "Hi" > /var/www/html/test/index.html

अगर मैं इसके साथ भागता हूं sudo यह अच्छा काम करता है।

$ sudo ./script.sh

लेकिन मैं डॉन 'टी के साथ चलाना चाहते हैं sudo. क्योंकि echo doesn "टी की जरूरत है विशेषाधिकारी। दूसरे हाथ में अगर मैं यह बिना चलाने के लिए sudo इस तरह:

$ ./script.sh

पहले आदेश के लिए (mkdir) यह मुझसे रूट पासवर्ड और दूसरी कमांड के लिए नहीं पूछता है "t रन और मुझे एक अनुमति अस्वीकृत त्रुटि दे।

मैं इस स्थिति को कैसे संभाल सकता हूं?

उत्तर:

जवाब के लिए 0 № 1

आपके सेटअप के आधार पर, उदा। ubuntu में अगर मैं 2 बार sudo चलाता हूं, तो दूसरी बार I "t" को पासवर्ड देना होगा। इसलिए यह संभव है कि दूसरा sudo DID चलाए, बिना पासवर्ड दोबारा पूछे।

आप स्पष्ट कर सकते हैं, यह प्रयास करें:

sudo echo a
sudo echo b

यह सबसे अधिक संभावना है, जैसा कि किप के ने टिप्पणी की थी, त्रुटि की उत्पत्ति "हाय" से होती है ... क्योंकि सामान्य उपयोगकर्ता को /var/www/html/test/index.html लिखने की अनुमति नहीं है।

किन्दा ओवरकिल, लेकिन आप इस तरह लगातार प्रतिक्रिया दे सकते हैं:

sudo bash -c "echo mkdir; mkdir /var/www/html/test"
sudo bash -c "echo cp; cp ./index.html /var/www/html/test/index.html"

जवाब के लिए 0 № 2

प्रयत्न chown निर्देशिका के लिए test:

#!/bin/bash

sudo bash -c "mkdir /var/www/html/test && chown -R USER /var/www/html/test"
cp ./index.html /var/www/html/test/index.html
echo "Hi" > /var/www/html/test/index.html

या ... chmod o+w /var/www/html/test