סקריפט מעטפת להעלות קובץ לאותו תיקייה על שרת מרוחק
משימה נפוצה מאוד עבור מפתח אינטרנט היא העלאת קובץ בודד מתוך תיקיית משנה בתיבת הפיתוח שלך לאותה תיקיית משנה בשרת מרוחק. למרבה הצער, זה תמיד מסתיים להיות תהליך ידני מעצבן מעורבים מיתוג ספריות על שני השרתים, מבזבז כמות גדולה של זמן.
אז, לקחתי על עצמי לכתוב סקריפט פגז כדי להפוך את זה בשבילי, באמצעות SCP להעתיק קובץ מאובטח. (הערה חשובה הערה: FTP הוא איום להחריד, להשתמש WinSCP במקום זאת)
הבעיה העיקרית שיש לפתור היא שלי להתקין WordPress על מכונת הפיתוח שלי יש ספריית בסיס שונה מאשר ההתקנה בשרת שלי. על מכונת הפיתוח שלי הוא / var / www, ועל השרת שלי הוא משהו יותר כמו / var / www / howtogeek / docs /. החלטתי פשוט להעביר אותם למשתנים בתחילת הסקריפט, כך:
[email protected]
RDIR = / var / www / howtogeek / docs
LDIR = "\ / var \ / www"
שים לב כי בספרייה המקומית (LDIR) בתסריט יש \ לפני כל / בנתיב. הסיבה לכך היא שאנחנו הולכים להעביר את זה לתוך הפקודה sed מאוחר יותר בתסריט, אז אנחנו צריכים לברוח ערכים אלה. אני בטוח שיש דרך אחרת סביב זה, אבל אני לא מודע לזה.
לאחר מכן, אני להגדיר אוטומטית ssh logins. לשם כך, עליך להפעיל תחילה את השירות ssh keygen כך:
ssh-keygen-rsa
לאחר מכן עליך להעתיק את הקובץ ~ / .shsh / id_rsa.pub לקובץ ~ / .shsh / authorized_keys בשרת המרוחק. אם הספרייה ~ / .shsh כבר נוצרת בשרת המרוחק (ייתכן שתרצה לבדוק), באפשרותך להפעיל פקודה זו כדי להעתיק את המקשים מעל:
cat ~ / .ssh / id_rsa.pub ssh user @ hostname 'חתול >> .shsh / author_keys'
עכשיו יש לנו אוטומטית ssh logins, אשר יאפשר להשתמש בכלי השירות ללא סיסמה. עכשיו בואו נסתכל על הפקודה scp נוכל להשתמש בסקריפט:
$ 1 $ SSHSERVER: $ RDIR'pwd | s / $ LDIR // '/' echo $ 1 | sed '/.*\/// "
ה- $ 1 הוא הפרמטר שתעביר לסקריפט עבור שם הקובץ שאתה מנסה להעלות. $ SSHSERVER ו- $ RDIR הם משתנים שנקבע בתחילת הסקריפט כדי להגדיר את שם המשתמש @ hostname ואת הנתיב המרוחק הקודם.
הבלוק הראשון שמתחיל ב- pwd | sed לוקח את נתיב הספרייה הנוכחי ופוסל את החלק הקודם של הנתיב שאינו תואם לשרת המרוחק, אך משאיר את שאר הנתיב. לדוגמה, אם היית ב- / var / www / wp-content / כאשר הפעלת את הפקודה, הבלוק sed היה להפשיט את / var / www מבוסס על המשתנה LDIR שלנו, אבל להשאיר את / wp-content / חלק ממנו.
הבלוק השני רק מוודא לפשוט את הנתיב הקודם כולו משם הקובץ עבר לסקריפט אז אתה פשוט מקבל את שם הקובץ.
לדוגמה, אם אתה שם את הסקריפט 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
במקום לנסות ליצור קובץ Script משלך מבוסס על המאמר, אני כבר סיפק את זה בשבילך כדי להוריד. בדרך זו לא יהיו בעיות עם תווים מיוחדים לא עובד ... וכן, השתמשתי בסקריפט כדי להעלות את עצמו =)
הורד geek-uploader.sh
פשוט לשים את זה איפשהו בדרך שלך, ואת שם זה מה שאתה רוצה. שיניתי את השם שלי רק "למעלה", אז אני יכול פשוט להקליד "up filename.txt" להעלות. זכור גם לפתוח אותו ולשנות את המשתנים בתחילת הסקריפט כדי להתאים את הסביבה שלך.
סקריפט זה צריך לעבוד על כל דבר עם * פגז nix ואת כלי השירות. אני משתמש באובונטו, אבל זה צריך לעבוד על Solaris, OS X, או אפילו עם Windows עם Cygwin מותקן.