शेल स्क्रिप्ट एक दूरस्थ सर्वर पर समान उपनिर्देशिका में एक फ़ाइल अपलोड करने के लिए

शेल स्क्रिप्ट एक दूरस्थ सर्वर पर समान उपनिर्देशिका में एक फ़ाइल अपलोड करने के लिए
शेल स्क्रिप्ट एक दूरस्थ सर्वर पर समान उपनिर्देशिका में एक फ़ाइल अपलोड करने के लिए

वीडियो: शेल स्क्रिप्ट एक दूरस्थ सर्वर पर समान उपनिर्देशिका में एक फ़ाइल अपलोड करने के लिए

वीडियो: शेल स्क्रिप्ट एक दूरस्थ सर्वर पर समान उपनिर्देशिका में एक फ़ाइल अपलोड करने के लिए
वीडियो: Using Safari as an RSS feed reader - YouTube 2024, मई
Anonim

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

इसलिए, मैंने सुरक्षित फ़ाइल प्रतिलिपि के लिए एसपीपी का उपयोग करके, इसे मेरे लिए स्वचालित करने के लिए एक शेल स्क्रिप्ट लिखने के लिए खुद को लिया है। (महत्वपूर्ण साइड नोट: ftp बहुत असुरक्षित है, इसके बजाय WinSCP का उपयोग करें)

हल करने की मुख्य समस्या यह थी कि मेरे वर्डप्रेस मशीन पर मेरे वर्डप्रेस इंस्टॉलेशन में मेरे सर्वर पर इंस्टॉलेशन की तुलना में एक अलग बेस निर्देशिका है। मेरी विकास मशीन पर यह / var / www है, और मेरे सर्वर पर कुछ / var / www / howtogeek / docs / की तरह कुछ और है। मैंने स्क्रिप्ट की शुरुआत में उन्हें चर में बदलने का फैसला किया, इस तरह:

[email protected] RDIR=/var/www/howtogeek/docs LDIR=’/var/www’

ध्यान दें कि स्क्रिप्ट में स्थानीय निर्देशिका (एलडीआईआर) में प्रत्येक / पथ से पहले है। ऐसा इसलिए है क्योंकि हम इसे स्क्रिप्ट में बाद में एक sed कमांड में पास करने जा रहे हैं, इसलिए हमें उन मानों से बचना होगा। मुझे यकीन है कि इसके चारों ओर कुछ और तरीका है, लेकिन मुझे इससे अनजान है।

इसके बाद, मैंने स्वचालित एसएसएच लॉगिन स्थापित किए। ऐसा करने के लिए, आपको सबसे पहले ssh keygen उपयोगिता चलाने की आवश्यकता है:

ssh-keygen -t rsa

फिर आपको दूरस्थ सर्वर पर ~ /.ssh / id_rsa.pub फ़ाइल को ~ /.ssh / अधिकृत_keys फ़ाइल में कॉपी करने की आवश्यकता है। अगर ~ /.ssh निर्देशिका पहले से ही दूरस्थ सर्वर (शायद जांचना चाहती है) पर बनाई गई है, तो आप कुंजी को कॉपी करने के लिए इस कमांड को चला सकते हैं:

cat ~/.ssh/id_rsa.pub | ssh user@hostname ‘cat >>.ssh/authorized_keys’

अब हमारे पास स्वचालित एसएसएच लॉग इन हैं, जो बिना पासवर्ड के एसपीपी उपयोगिता का उपयोग कर सक्षम होंगे। आइए स्क्रिप्ट कमांड को देखें जो हम स्क्रिप्ट में उपयोग करेंगे:

scp $1 $SSHSERVER:$RDIR`pwd|sed “s/${LDIR}//”`/`echo $1|sed ‘s/.*///’`

$ 1 वह पैरामीटर है जिसे आप उस फ़ाइल नाम के लिए स्क्रिप्ट में पास करेंगे जिसे आप अपलोड करने का प्रयास कर रहे हैं। $ SSHSERVER और $ RDIR वे चर हैं जिन्हें हम स्क्रिप्ट की शुरुआत में उपयोगकर्ता @ होस्टनाम और पिछले दूरस्थ पथ सेट करने के लिए सेट करेंगे।

पहला ब्लॉक जो pwd | sed से शुरू होता है, वर्तमान निर्देशिका पथ लेता है और पथ के पिछले भाग को स्ट्रिप्स करता है जो दूरस्थ सर्वर से मेल नहीं खाता है, लेकिन शेष पथ को छोड़ देता है। उदाहरण के लिए, यदि आप कमांड चलाते समय / var / www / wp-content / में थे, तो sed ब्लॉक हमारे एलडीआईआर चर के आधार पर / var / www को बंद कर देगा, लेकिन इसके / wp-content / part को छोड़ दें ।

दूसरा ब्लॉक सिर्फ स्क्रिप्ट पर पास किए गए फ़ाइल नाम से पूरे पिछले पथ को बंद करना सुनिश्चित करता है ताकि आपको फ़ाइल नाम मिल सके।

उदाहरण के लिए, यदि आपने स्क्रिप्ट up.sh नाम दिया है और इसे फ़ाइल पर अपने स्थानीय / var / www / wp-content / plugins / निर्देशिका से चलाया है:

up.sh myplugin.php

इसे खोल के रूप में निम्नलिखित के रूप में विस्तारित किया गया होगा:

scp myplugin.php [email protected]:/var/www/howtogeek/docs/wp-content/plugins/myplugin.php

लेख के आधार पर अपनी खुद की स्क्रिप्ट फ़ाइल बनाने की कोशिश करने के बजाय, मैंने इसे आपके लिए डाउनलोड करने के लिए प्रदान किया है। इस तरह विशेष पात्रों के साथ काम करने में कोई समस्या नहीं होगी … और हाँ, मैंने स्क्रिप्ट का इस्तेमाल स्वयं अपलोड करने के लिए किया था =)

Geek-uploader.sh डाउनलोड करें

बस इसे अपने रास्ते में कहीं भी रखें, और जो भी आप चाहते हैं उसे नाम दें। मैंने अपना नाम बदलकर "अप" कर दिया, इसलिए मैं अपलोड करने के लिए बस "up filename.txt" टाइप कर सकता हूं। इसे अपने पर्यावरण से मेल खाने के लिए स्क्रिप्ट की शुरुआत में चर खोलने और चर बदलने के लिए भी याद रखें।

इस स्क्रिप्ट को * निक्स शैल और एसपीपी उपयोगिता के साथ कुछ भी काम करना चाहिए। मैं उबंटू का उपयोग कर रहा हूं, लेकिन इसे सोलारिस, ओएस एक्स, या यहां तक कि सिग्विन के साथ विंडोज़ पर भी काम करना चाहिए।

सिफारिश की: