إحدى المهام الشائعة جدًا لمطوّر الويب هي تحميل ملف واحد من دليل فرعي في مربع التطوير إلى نفس الدليل الفرعي على خادم بعيد. لسوء الحظ ، ينتهي الأمر دائمًا بكونه عملية يدوية مزعجة تتضمن تبديل الدلائل على كلا الخادمين ، وإهدار قدر كبير من الوقت.

لذا ، فقد أخذت على عاتقي كتابة نص برمجي من shell لأتمتة ذلك نيابةً عني ، باستخدام scp لنسخ الملفات الآمن. (ملاحظة جانبية مهمة: بروتوكول نقل الملفات غير آمن بشكل فظيع ، استخدم WinSCP بدلاً منه)

كانت المشكلة الأساسية لحل أن تثبيت WordPress على جهاز التطوير لدي دليل أساسي مختلف عن التثبيت على الخادم الخاص بي. على جهاز التطوير الخاص بي ، يكون / var / www ، وعلى الخادم الخاص بي شيء أكثر مثل / var / www / howtogeek / docs /. قررت فقط نقل تلك إلى المتغيرات في بداية البرنامج النصي ، مثل هذا:

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

لاحظ أن الدليل المحلي (LDIR) في البرنامج النصي لديه before كل / في المسار. هذا لأننا سوف نمرر هذا إلى أمر سيد في وقت لاحق من النص ، لذلك علينا الهروب من تلك القيم. أنا متأكد من وجود طريقة أخرى لذلك ، لكنني غير مدرك لذلك.

بعد ذلك ، أقوم بإعداد تسجيلات الدخول التلقائي لـ ssh. للقيام بذلك ، تحتاج أولاً إلى تشغيل الأداة المساعدة ssh keygen مثل:

ssh-keygen -t rsa

ثم تحتاج إلى نسخ الملف ~ / .ssh / id_rsa.pub إلى ملف ~ / .ssh / authorized_keys على الخادم البعيد. إذا تم بالفعل إنشاء الدليل ~ / .ssh على الخادم البعيد (قد ترغب في التحقق) ، فيمكنك تشغيل هذا الأمر لنسخ المفاتيح على:

cat ~/.ssh/id_rsa.pub | ssh [email protected] ‘cat >> .ssh/authorized_keys’

الآن لدينا لدينا تسجيلات الدخول ssh الآلي ، والتي ستمكن من استخدام الأداة المساعدة SCP بدون كلمة مرور. لنلقِ الآن نظرة على أمر scp الذي سنستخدمه في النص البرمجي:

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

يمثل $ 1 المعلمة التي سيتم تمريرها إلى النص البرمجي لاسم الملف الذي تحاول تحميله. $ SSHSERVER و $ RDIR هي متغيرات سنعينها في بداية النص البرمجي لضبط اسم المستخدم @ hostname والمسار البعيد السابق.

كتلة الأول الذي يبدأ مع الأشخاص ذوي الإعاقة | الحوار الاقتصادي الاستراتيجي يأخذ مسار الدليل الحالي وشرائط قبالة الجزء السابق من هذا المسار الذي لا يتطابق مع الملقم البعيد، ولكنه يترك بقية المسار. على سبيل المثال، إذا كنت في / فار / على شبكة الاتصالات العالمية / الفسفور الابيض بين المحتوى / عندما قمت بتشغيل الأمر، وكتلة الحوار الاقتصادي الاستراتيجي سوف تجريدها من / فار / على شبكة الاتصالات العالمية على أساس متغير LDIR لدينا، ولكن يترك / الفسفور الابيض بين المحتوى / جزء منه .

الكتلة الثانية فقط تأكد من إزالة المسار السابق بأكمله من اسم الملف الذي تم تمريره إلى البرنامج النصي حتى تحصل على اسم الملف فقط.

على سبيل المثال ، إذا قمت بتسمية البرنامج النصي 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" للتحميل. تذكر أيضًا فتحه وتغيير المتغيرات في بداية البرنامج النصي لمطابقة البيئة الخاصة بك.

يجب أن يعمل هذا البرنامج النصي على أي شيء مع shell * nix والأداة scp. أستخدم Ubuntu ، ولكن يجب أن يعمل على Solaris أو OS X أو حتى Windows مع Cygwin.

أعلى نصائح:
التعليقات: