मैं एक स्क्रिप्ट डाउनलोड करना चाहता हूं: http://dl.dropbox.com/u/11210438/flockonus-stack.sh और इसे निष्पादित करें। मेरा अनुमान है, इसका नाम बदलने के लिए wget का उपयोग करना, उसे chmod करना और निष्पादित करना।
उबंटू पर ऐसा करने के लिए क्या आदेश हैं?
मैं एक स्क्रिप्ट डाउनलोड करना चाहता हूं: http://dl.dropbox.com/u/11210438/flockonus-stack.sh और इसे निष्पादित करें। मेरा अनुमान है, इसका नाम बदलने के लिए wget का उपयोग करना, उसे chmod करना और निष्पादित करना।
उबंटू पर ऐसा करने के लिए क्या आदेश हैं?
जवाबों:
सावधान
स्क्रिप्ट चलाने से पहले, क्या आप उस व्यक्ति पर भरोसा करते हैं जिसने इसे लिखा है?
उदाहरण के लिए, क्या आपको उम्मीद है कि स्क्रिप्ट में यह शामिल होगा?
echo "brain1" > /etc/hostname
वह आपके होस्टनाम को बदलने का प्रयास करेगा।
भविष्य के संदर्भ के लिए, यदि, स्क्रिप्ट के सत्यापन के बाद सही है और दुर्भावनापूर्ण नहीं है, तो आप इसे इस तरह एक पंक्ति में चला सकते हैं:
wget -O - http://dl.dropbox.com/u/11210438/flockonus-stack.sh | bash
लेकिन इसे अलग से डाउनलोड करें और इसे पहली बार चलाने से पहले पढ़ें।
यह भी ध्यान दें कि डाउनलोड की गई स्क्रिप्ट के अंदर इंटरैक्टिव संकेत इस पद्धति का उपयोग करके ठीक से काम नहीं कर सकते हैं।
apt-get install
पंक्तियाँ? यदि apt-get
कोई अतिरिक्त निर्भरता स्थापित करेगा, तो यह आपसे पूछेगा, और यदि यह नहीं हो सकता है तो यह सुरक्षित होने के लिए बाहर निकल जाएगा। या तो सभी आश्रित पैकेजों को कमांड लाइन के तर्कों में जोड़ें, या जोड़ने पर विचार करें -y
, जैसेapt-get -y install...
गैर-इंटरेक्टिव लिपियों
wget -O - http://website.com/my-script.sh | bash
ध्यान दें कि इस पद्धति का उपयोग करते समय, इंटरैक्टिव स्क्रिप्ट काम नहीं करेगी।
इंटरैक्टिव लिपियों
इंटरैक्टिव स्क्रिप्ट को काम करने के लिए, आप इसका उपयोग कर सकते हैं:
bash <(wget -qO- http://website.com/my-script.sh)
इंटरएक्टिव लिपियों को रूट के रूप में चलाने की आवश्यकता है
चेतावनी: यह बेहद खतरनाक है। सिफारिश नहीं की गई।
sudo su -c "bash <(wget -qO- http://website.com/my-script.sh)" root
ध्यान दें कि आप साधारण उपयोग नहीं कर सकते sudo bash
क्योंकि उपयोग करने से <(...)
वर्चुअल फ़ाइल बन जाएगी और यह फ़ाइल डिस्क्रिप्टर जड़ों से टकराकर पहुंच से बाहर नहीं होगा। इसे उसी उपयोगकर्ता पर निष्पादित किया जाना चाहिए जिसे वर्चुअल फ़ाइल पढ़ने की आवश्यकता है, इसलिए इसे भेजा जाना चाहिए क्योंकि यह रूट उपयोगकर्ता शेल के अंदर स्वयं का कमांड है।
वह स्क्रिप्ट मुझ से है, यह सुरक्षित है .. एक लाइनर से प्यार है, लेकिन, इसकी कुछ इंटरैक्टिव लाइनें हैं जो नहीं चलीं .. पता नहीं क्यों?
जब dpkg चलता है, जिसे apt-get कहते हैं, तो यह स्टड फ्लश करता है। यदि आप जैसे कमांड का उपयोग कर रहे हैं curl blah | bash
, तो आप मूल रूप से पेज की सामग्री को STDIN के माध्यम से बैश करने के लिए भेज रहे हैं। यदि आपकी एक आज्ञा उपयुक्त है, तो चलता है, बाकी सब फ्लश हो जाएगा।
ट्रिक इस तरह कमांड का उपयोग करना है apt-get install --yes denyhosts </dev/null
। इससे apt-get को एक अलग इनपुट मिलता है, और यह आपकी स्क्रिप्ट के बाकी हिस्सों के बजाय बस फ्लश / देव / अशक्त करता है।
यदि आप दूरस्थ स्क्रिप्ट के माध्यम से कुछ स्थापित करने का एक पूरा उदाहरण देखना चाहते हैं, तो आप इस स्क्रिप्ट को डेनिहोस्ट सेट करने के लिए देखना चाहते हैं
रिकॉर्ड के लिए, मैं इसके लिए wget over curl को प्राथमिकता देता हूं, लेकिन wget भी ठीक होना चाहिए।
इन सभी उदाहरणों में एक महत्वपूर्ण बिंदु याद आ रहा है। यदि आप url का उपयोग करते हैं http://dl.dropbox.com/u/11210438/flockonus-stack.sh
, तो आपको इसे डाउनलोड करने के लिए हर बार स्क्रिप्ट का ऑडिट करना होगा, क्योंकि यह आपके और ड्रॉपबॉक्स के बीच नेटवर्क पथ पर किसी को भी संशोधित कर सकता है। आप पर स्विच करते हैं http रों : //dl.dropbox.com/u/11210438/flockonus-stack.sh , आप असुरक्षा की है कि स्रोत नहीं होगा।
(ड्रॉपबॉक्स http URL को https में रीडायरेक्ट करने की कोशिश करता है, लेकिन नेटवर्क अटैक के मामले में wget को कभी भी वास्तविक ड्रॉपबॉक्स से बात नहीं करनी पड़ेगी, और वह रीडायरेक्ट कभी नहीं देखेगा)
बस इसे डाउनलोड करने का प्रयास करें जैसा कि आपने विग के साथ निर्दिष्ट किया है और फिर इसे सीधे निष्पादित कर रहे हैं। आप जिस स्क्रिप्ट को डाउनलोड करना चाहते हैं, उसके लिए आप फैंसी और वैरिएबल प्राप्त कर सकते हैं, लेकिन यह ट्रिक करेगा
उदाहरण के लिए:
!#/bin/bash
#Change to temp directory
cd /tmp
#Download file using wget
wget http://dl.dropbox.com/u/11210438/flockonus-stack.sh
#Execute the file
sh flockonus-stack.sh
echo "brain1" > /etc/hostname
आसानी से हो सकता हैrm -rf /
।