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