PracticU

דוגמאות לסקריפט שימושי

בלי כתוביותעם כתוביות
PracticU › קורס לינוקס למתקדמים - הסמכה בינלאומית - Linux - Red Hat - RHCSA / RHCE › דוגמאות לסקריפט שימושי
מילון מושגים:
סקריפט - קובץ המכיל רצף פקודות שמבוצעות על ידי מפרש, לרוב כדי להפוך משימות לאוטומטיות.
גיבוי - העתק שמור של נתונים שנשמר כדי לאפשר שחזור במקרה של תקלה, מחיקה או פגיעה במקור.
HTML - שפת הסימון שבה בונים את מבנה ותוכן דפי האינטרנט, באמצעות תגיות שמגדירות כותרות, פסקאות, קישורים ועוד.
תיקייה - מכל במערכת הקבצים שמשמש לארגון קבצים ותיקיות אחרות בתוך מבנה היררכי.
לוג - רישום מתועד של אירועים ופעולות שמתרחשים במערכת או בתוכנה, המשמש למעקב ולאיתור תקלות.
משתנה - שם שמפנה למקום בזיכרון שבו נשמר ערך שיכול להשתנות במהלך ריצת התוכנית, כמו מספר, טקסט או אובייקט.

דוגמאות לסקריפט שימושי
ההרצאה מסכמת את הפרקים הקודמים בעזרת סקריפט מעשי: גיבוי של קבצי HTML מתיקייה לתיקיית ארכיון, עם קובץ לוג שמתעד מה קרה בכל ריצה.
המשימה
הבוס ביקש סקריפט שמחפש את כל קבצי ה-HTML בתיקייה שנבחרה, מעתיק אותם לתיקיית ארכיון, ורושם בקובץ לוג מה נעשה, כולל מספר הקבצים שגובו. אם אין קבצי HTML, הסקריפט רושם הודעה ויוצא.
שלבי הסקריפט
1. שם הקובץ: השם נבנה מהמשתנה date_var, שמכיל את התאריך של היום בפורמט קצר, והסיומת .log.
2. יצירת הקובץ: פקודת touch יוצרת את הקובץ. הסימן > כותב את השורה הראשונה, והסימן >> מוסיף שורות בלי למחוק את הקיים.
3. בדיקת קבצים: פקודת ls *.html בודקת אם יש קבצים. אם $? שווה 1, אין קבצי HTML: הסקריפט רושם no html found today ויוצא עם exit 1.
4. ספירה: ls -l *.html | wc -l סופר את הקבצים, והתוצאה נשמרת במשתנה number_html ונרשמת בלוג.
5. גיבוי: cp *.html מעתיק את הקבצים לתיקיית הארכיון. המרצה בודק את התוצאה עם ls -l.
6. רישום הרשימה: ls -1 מציג את שמות הקבצים בארכיון, שורה לכל קובץ, והפלט נכתב ללוג.
טעויות שהמרצה מראה
1. הפרדה במשתנה: כשמצמידים משתנה לטקסט אחר בלי הפרדה, לינוקס מחפש משתנה בשם שגוי. הפתרון הוא סוגריים מסולסלים, ${date_var}.log.
2. שינוי שם: כששם הקובץ משתנה, צריך לעדכן אותו בכל מקום שבו הוא מופיע.
הסקריפט משלב משתנים, if, exit, פקודות ls, cp ו-wc ורישום ללוג. המרצה ממליץ לכתוב סקריפט דומה בתחום העניין שלכם, כדי לתרגל את כל השלבים יחד.
השיעור הבא בקורס: סקריפט עם לולאת while
לחץ כאן להורדת הורדת קבצי Script של לינוקס שהיו בסרטים
מילון מושגים:
דיסק - התקן לאחסון קבוע של נתונים, כמו כונן קשיח (HDD) או כונן מבוסס זיכרון מהיר (SSD).
תיקייה - מכל במערכת הקבצים שמשמש לארגון קבצים ותיקיות אחרות בתוך מבנה היררכי.
מחיצה - חלוקה לוגית של דיסק פיזי לאזורים נפרדים, שכל אחד מתפקד כאילו הוא כונן עצמאי.
זיכרון - רכיב מהיר ונדיף שבו המחשב שומר נתונים ותוכניות בזמן ריצתם. תוכנו נמחק עם כיבוי המחשב.
דומיין - תחום ניהולי משותף של מחשבים ומשתמשים ברשת ארגונית, המנוהל מרכזית. גם שם ייחודי של אתר באינטרנט.
אימות - תהליך שמוודא שהמשתמש או המערכת הם מי שהם טוענים שהם, בדרך כלל באמצעות סיסמה, קוד או תעודה.
Active Directory - שירות מדריך של מיקרוסופט לניהול מרכזי של משתמשים, מחשבים והרשאות ברשת ארגונית מבוססת דומיין.
GPO - אובייקט מדיניות קבוצתית ב-Active Directory, שמכיל הגדרות ומדיניות המוחלות על משתמשים ומחשבים.


מבנה ושמות דיסקים ומחיצות בלינוקס:


(Sda (disk0): זה הדיסק הפיזי הראשון (SATA DISK)

(Sda1,Sda2 (Partitions in disk): אלו הן המחיצות בתוך הדיסק הפיזי הראשון.

(Sdb (disk1): זה הדיסק הפיזי השני כמו בוינדוס Disk1

(Sdb1,Sdb2 (Partitions in disk): אלו הן המחיצות בתוך הדיסק הפיזי השני.

מחיצת השורש הראשונה:

וינדוס: C

לינוקס: /

מחיצות נוספות:

וינדוס: D: / E:

לינוקס: /data /example כמו תיקיות.

הערה: בתהליך ההתקנה יוצרים מחיצה נוספת לזיכרון הווירטואלי שנקראת SWAP

מטרת צירוף לינוקס לדומיין הינה לאימות משתמשים מתוך Active Directory בלבד ואין GPO  ללינוקס דרך AD.


הוכן ע"י התלמיד המצטיין: אברהים אבו שיכה

פרקי ההרצאה: דוגמאות לסקריפט שימושי

  1. 00:00

    תרגיל שמסכם משתנים ו-if

  2. 00:41

    הדרישות: גיבוי קבצי HTML וקובץ Log

  3. 02:23

    התחלת script8

  4. 04:07

    רשימת משתנים ותכנון השלבים

  5. 05:26

    קובץ Log לפני הגיבוי

  6. 07:07

    חיתוך התאריך לשם הקובץ

  7. 09:12

    יצירת קובץ ה-Log עם touch ו-echo

  8. 12:52

    הרצה ותיקון שם הקובץ

תמלול ההרצאה: דוגמאות לסקריפט שימושי

הטקסט המלא של הדקות הראשונות בהרצאה «דוגמאות לסקריפט שימושי» בקורס הווידאו של PracticU – כתוביות בעברית עם זמן התחלה לכל פסקה. כך תוכלו לקרוא ולחפש את הנושאים לפני שמתחילים ללמוד.

  1. 00:20

    בסרטון שלפניכם אני מעוניין שנעשה תרגיל ביחד, והתרגיל הזה איכשהו יסכם את הפרקים ה', ו' וז'. אז אם אתם זוכרים, בפרקים האלה אנחנו הזכרנו משתנים, הזכרנו את השימוש ב-if, then.

  2. 00:38

    הייתי רוצה לעשות תרגיל שהוא מאוד קשור לאדמיניסטרציה היומיומית של לינוקס, והוא טומן בחובו את כל הדברים שעשינו עד עכשיו בעצם.

  3. 00:51

    התבקשנו על ידי הבוס שלנו ליצור את הסקריפט הבא. הסקריפט מחפש אחרי כל הקבצים עם סיומות html בתיקיה מסוימת שנבחר בלבד ומגבה אותם לתיקיית ארכייב שיש לנו בשלב פשוט מעתיק אותם.

  4. 01:10

    הסקריפט חייב לשלוח את הפעולות שבוצעו לקובץ לוג בכדי שנוכל לראות מה קרה במהלך הריצה. אנחנו צריכים שירוץ קובץ טקסט פשוט במקביל שאליו יירשמו כל מה שהוא עושה יירשם לתוך הקובץ הזה.

  5. 01:31

    הסקריפט חייב לספק בקובץ לוג את כמות מספר הקבצים שגובו. כלומר, אחד הדברים, הפרמטרים הנוספים שאנחנו מעוניינים לדעת זה שיהיה כתוב גם את המספר של הקבצים שגובו.

  6. 01:45

    במידה ואין בכלל קבצי html, הסקריפט לא ירוץ ולא ירוץ כמובן בלי, אני מניח שרציתי לכתוב פה, בלי ליצור קובץ לוג עם המידע הנ"ל, אה סליחה, סליחה, סליחה, לא ירוץ, אבל ייצור קובץ לוג עם המידע הנ"ל.

  7. 02:07

    no html files to backup today עוד דבר חשוב אנחנו רוצים שהקובץ לוג השם שלו השם של הקובץ יהיה הדייט שבו הוא נוצר או הדייט והשעה אולי אפילו אוקיי אז הנה סקריפט חמוד וקטן עם המידע שיש לכם עד היום אתם יכולים כבר לעשות סקריפט כזה בואו ניגש לעבודה אנחנו נתייחס לסקריפט

  8. 02:39

    הזה כסקריפט 8 ברשותכם אוקיי אז כמובן מתחילים עם השורה הראשונה בין KSA שאנחנו כותבים ב-K של מה אנחנו הולכים לעשות בסקריפט הזה Descript backs up all HTML files in the folder files נגיד שיש לנו את איקאה שנקראת WebFiles ואותה

  9. 03:37

    כל פעם שיש לנו קבצי HTML שהמפתחים שלנו יצרו קבצי HTML שם הם שמים אותם כל יום ושם אני רוצה לגבות את זה ומשם אני רוצה לגבות את הקבצים האלה אוקיי אני שם לי את כבר מכין לי את הרשימה של אולי variables שאני אשתמש בהם, אני עדיין לא יודע מה אני הולך להשתמש, אתם יודעים, זה יחסית, זה כמו איזשהו

  10. 04:13

    פסל, יש לנו את התמונה בראש, או צייר, יש לנו מה אנחנו רוצים שיקרה, אבל אנחנו עדיין לא יודעים איפה לשים מה, וזה בסדר גמור, אי אפשר להתחיל מהסוף להתחלה, אוקיי? אבל לאט לאט זה יצא לכם מהראש, אבל טיפ שיש לי בשבילכם זה, כמו שאתם כותבים את הסקריפט בשלבים, ככה גם אתם מנסים לחשוב על מה מבקשים ממכם.

  11. 04:39

    אז קודם כל מבקש מכם, מבקשים מכם שהסקריפט יחפש קבצים עם סיומת html. אוקיי. אוטומטית בראש אני אומר לעצמי, אז אוקיי, לא רק שהוא צריך לחפש את הקבצי html, הוא גם צריך בטח לשים אותם איפשהו, את השמות שלהם בצד, כדי שאחרי זה נוכל ללכת ולגבות אותם, מן הסתם, נכון?

  12. 05:03

    מצד שני, אם זה כל הקבצי html וזה לא קבצים מסוימים html, אז אני יכול גם להשתמש במשהו כללי יותר כדי לגבות את כל מה שהוא html בתיקייה.

  13. 05:13

    גם זה אופציה, אוקיי. אז הדבר הראשון שאני רוצה לעשות, אני רוצה לחפש אחרי, לבדוק את מספר הקבצי html שיש לי בתיקייה הזאתי, כי זה גם אחד הדברים שמבקשים ממני.

  14. 05:26

    וגם מבקשים ממני גם ליצור קובץ לוג במקביל עם הדייט. אוקיי. אז מה אתם אומרים? אולי נתחיל ביצירת הקובץ לוג הזה קודם כל, שיהיה לנו קובץ לוג שמחכה לקבל input, ואחרי זה נמשיך עם הפעולה עצמה, כי בכל מקרה אני חייב קובץ לוג, גם אם אין שם שום דבר.

  15. 05:48

    גם זה נכון. בואו נתחיל עם הקובץ לוג, שאלה של הקובץ לוג. מה אני רוצה לעשות? מה ביקשו ממני? רק ברשותכם, אם אתם זוכרים, דיברנו על זה שכדאי שיהיה לכם, שיהיה פתוח עבורכם עוד חלון של ההשערת שלכם, כדי שתוכלי לבדוק שמה, רק אני אשנה פה את הצבעים,

  16. 06:10

    כדי שתוכלו לבדוק שמה את מה שאתם מתכננים לעשות. אז אני רוצה ליצור קובץ לוג עם שם של דייט. איך אני עושה את זה?

  17. 07:13

    אני מן הסתם אצור שם של קובץ, אבל אני אכניס, אני אשלב לתוכו את הדייט של היום. אבל כשאני עושה דייט, הדייט הוא מאוד מאוד ארוך.

  18. 07:29

    אולי הייתי רוצה שהוא יהיה טיפה יותר קצר, למשל רק אוגוסט עשרים וארבע לדוגמה. אז הייתי צריך לחתוך את הדייט הזה, זוכרים? היינו צריכים לחתוך את הדייט. אז דייט, ואז אני חותך.

  19. 07:43

    או קרינט, אני צריך את אוגוסט ועשרים וארבע, זה אומר אני צריך את העמודה השנייה והעמודה השלישית. ואני רוצה גם לחבר אותם עם איזה כזה קו כזה יפה.

  20. 08:10

    אז תיאר רווח, תחליף לי את זה בבקשה למינוס, מגניב, אוגוסט 24, או זה יפה, אהבתי את זה. אני את כל זה עכשיו אקח ואני אדחוף את זה פה לשם של קובץ בעצם, או יותר נכון, סליחה, אני אדחוף את זה לשם של משתנה ואז אני אכניס את זה לשם של הקובץ, אני אראה לכם את זה עכשיו.

  21. 08:32

    אז נקרא לזה date var = הדבר הזה והנה עכשיו יש לי, כבר כשהסקריט מתחיל לעבוד יש לי כבר את ה-date var הזה, בעצם 24 לאוגוסט וכבר עכשיו אני יכול כי אני יודע שיש לי כבר משתנה אחד שחשבתי עליו ועכשיו אני יכול לרשום את המשתנה הזה שלי פה הדי דבר הזה המשתנה הזה אני רוצה להשתמש בו כדי לתת את השם לקובץ לוג עוד רגע מגניב חתכתי את הכל יפה ועכשיו אני אצור את הקובץ לוג איך אני יוצר קובץ לוג מאוד מאוד פשוט

  22. 09:24

    touch ככה יוצרים קובץ touch ושם של קובץ במקום touch אתם יכולים לעשות עוד פעם אם בא לכם אקו זה אולי אפילו יותר נחמד אני חושב את הדבר הבא צריך קצת רווחים בקאפ html פיילס בקאפ html פיילס בוא נשים פה את המשתנה שלנו זה די דבר וכמובן כל זה אנחנו עכשיו כותבים לתוך קובץ שאנחנו יוצרים והקובץ הזה בשמו בישראל יהיה נקודה txt מה

  23. 10:23

    בעצם עשיתי פה אז קודם כל יצרתי משתנה שהתוכן שלו זה חלק מהתאריך 24 לאוגוסט, מגניב. הוספתי את המשתנה החמוד הזה לרשימת המשתנים שלי. כל פעם שאני בונה משתנים חדשים אני מוסיף אותם לרשימת המשתנים כדי שבעתיד כשאני אבוא להסתכל על הסקריפט הזה אני אדע ש-Date var זה נועד לשימוש לשם

  24. 10:48

    ה-Log 5. אה, אוקיי, מגניב. וכן הלאה וכן הלאה וכן הלאה, אוקיי? יש אפילו שחושבים שכדאי לעשות באותה רשימה, ואני ממליץ מאוד, גם files that we used, אוקיי? אז למשל, במקרה שלנו פה, dollar.dat.var.log.txt שווה למה? שווה ל-log.file.

  25. 11:21

    מגניב. אז ככה אני בעצם הכנסתי כבר, אני חושב שזה בעצם שתי ציפורים במכה אחת. הכנסתי שורה ראשונה לתוך הקובץ, בניתי קובץ על ידי הגדול מהווה, נתתי לו גם שם שהבוס שלנו ביקש מאיתנו לעשות.

  26. 11:36

    בואו נכניס ברשותכם ככה בקטנה, אחר כך איזה יופי של כזה קו כזה מגניב יפה, שיהיה כזה אסתטי, והפעם אני משתמש בגדול מגדול מ, ואני שולח את זה לאותו קובץ. למה?

  27. 11:52

    כי אני לא רוצה להרוס את הקובץ הזה עם קו אחד ארוך, אני רוצה להוסיף לו שורה. פה אני יוצר את הקובץ, אין בעיה לעשות קו אחד. זה פשוט יוצר את הקובץ מסקאץ'.

  28. 12:02

    אבל כבר עכשיו אני ממשיך קדימה ואני מוסיף מידע לקובץ על ידי גדול מגדול מגדול. אוקיי? וכמובן אני יכול לעשות את מה שלימדתי אתכם, מה שנקרא do as I do, don't do as I say.

  29. 12:18

    לא, לא. do as I say, don't do as I do. ברשותכם, פארט 1, איי-טינג, די. איזה יופי חברים, אני ממש ממש אוהב את זה. וכבר עכשיו, כבר עכשיו אני מוסיף פה את המילה end. לא חייב v אבל זה בסדר, זה פשוט יותר יפה מול העיניים.

  30. 12:42

    זה פארט אחד, creating the log file as it will be as it will be. בואו נראה אם זה עובד, אוקיי? כמובן, תמיר, אנחנו בודקים את זה לפני שאנחנו ממשיכים קדימה.

  31. 12:53

    קודם כל, זה change mode 774 על הקובץ, script 8, זה התרגיל שלנו. עכשיו בואו נפעיל את הסקריפט ונראה מה הוא יעשה. לפני כן בואו נראה שאין לנו שום קובץ פה, אין לנו את הקובץ log הזה.

  32. 13:08

    בואו נרוץ לסקריפט, יצר את הקובץ log, אין לנו קובץ log. מדברים פה קובץ log? אהה, למה? הוא לא יצר את זה בתיקייה שבה אנחנו עובדים, אוקיי? בואו נראה אם בעצם לזה אנחנו, בואו נראה מה הסיבה שהוא לא יצר לנו את הלוג, בואו נראה.

  33. 13:37

    DateVar, בלה בלה בלה בלה בלה, DateVar.txt, DateVarLog.txt, DateVarLog, זה הכל טוב ויפה, וכן, דווקא הוא היה אמור ליצור את זה.

  34. 13:54

    נו, אני אבדוק מה קורה פה, Echo, תעשה את זה פה, תעשה את זה שם, DateVar. אין לי DateVarLog, אני חייב לעשות ביניהם איזשהו רווח או איזשהו משהו שמפריד בין שניהם.

  35. 14:13

    אוקיי, אני חייב לדאוג לכך שיהיה הפרדה. כי בעצם המחשב חיפש את ה-date var log variable, אוקיי? ומה שאני יכול לעשות זה, משהו מתקדם יותר שעוד לא לימדתי אתכם, וזה לשים את זה בגרשיים מיוחדות כאלה, קוראים לזה גרשיים curly-barricades, אוקיי?

  36. 14:34

    ואז אני מפריד בין הלוג לבין השם עצמו, או שאני הולך ואני פשוט כבר עכשיו יודע שזה הולך להיות לוג, אז למה שלא,

לקורס המלא: קורס לינוקס מתקדם אונליין

ההרצאה הקודמת: סקריפט עם IF - THEN - ELSE

ההרצאה הבאה: סקריפט עם לולאת while

הרצאות קשורות מקורסים אחרים

  • שימושי ענן נפוצים
  • דוגמאות לעבודה עם JSON - חלק 1
  • דוגמאות לשימוש ב-SIEM - חלק 1

קורסים נוספים במסלול

  • קורס AWS - ניהול מכונה וירטואלית בענן
  • קורס Terraform - DevOps - Azure & AWS
  • קורס קוברנטיקס - Kubernetes
  • קורס Docker - עם Swarm Cluster
  • קורס DevOps - Ansible
  • קורס PowerShell