29Jun

شل سكريبت لتحميل ملف إلى نفس الدليل الفرعي على ملقم بعيد

click fraud protection

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

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

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

[email protected]
ردير = /var/www/howtogeek/ مستندات
لدير = '\ / فار \ / ووو'

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

instagram viewer

بعد ذلك، قمت بإعداد عمليات تسجيل الدخول الآلي سش.للقيام بذلك، تحتاج أولا تشغيل الأداة المساعدة كجن سش مثل ذلك:

سش-كيجين -t رسا

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

القط ~ /.ssh/ id_rsa.pub |سش وسر @ هوسنام 'كات & غ؛ & غ؛.ssh / authorized_keys '

الآن لدينا سجلات تسجيل الدخول الآلي سش، والتي سوف تمكن باستخدام الأداة المساعدة سكب دون كلمة مرور.الآن دعونا نلقي نظرة على الأمر سكب سنستخدم في البرنامج النصي:

سكب $ 1 $ سسرفير: $ رديربود | سيد "s / ${ لدير} //" `/ إيكو $ 1 | سيد 's /.* \ /// '`

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

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

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

على سبيل المثال، إذا قمت بتسمية البرنامج النصي up.sh وقم بتشغيله من الدليل /var/www/ وب-كونتنت /plugins/ المحلي الخاص بك على ملف:

up.sh myplugin.php

كان يمكن توسيع هذا بواسطة شل كما يلي:

سكبmyplugin.php [email protected]: /var/www/howtogeek/docs/ وب-كونتنت /plugins/ myplugin.php

بدلا من محاولة إنشاء ملف البرنامج النصي الخاص بك استنادا إلى المقالة، لقد قدمت لك لتحميل.وبهذه الطريقة لن يكون هناك أي مشاكل مع الأحرف الخاصة لا تعمل. .. ونعم، لقد استخدمت السيناريو لتحميل نفسه =)

تحميل geek-uploader.sh

مجرد وضعه في مكان ما في المسار الخاص بك، وتسميته كل ما تريد.أنا إعادة تسمية الألغام إلى مجرد "حتى"، حتى أستطيع أن اكتب فقط "حتى filename.txt" لتحميل.تذكر أيضا لفتحه وتغيير المتغيرات في بداية البرنامج النصي لمطابقة البيئة الخاصة بك.

يجب أن يعمل هذا البرنامج النصي على أي شيء يحتوي على شل * نيكس و الأداة المساعدة سكب.أنا باستخدام أوبونتو، ولكن يجب أن تعمل على سولاريس، أوس X، أو حتى ويندوز مع سيغوين تثبيت.