PracticU

סקריפט עם לולאת for

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

סקריפט עם לולאת for
לולאת for עוברת על רשימה של ערכים, למשל שורות בקובץ או מילים במשתנה, ומריצה את הפקודות שבתוכה פעם אחת לכל ערך. בניגוד ללולאת while, אין צורך לקבוע מראש כמה פעמים לרוץ או לנהל מונה ידנית, וזו הסיבה שהמרצה משתמש בה לעיתים קרובות יותר.
איך לולאת for עובדת
1. רשימה כמקור: הלולאה מקבלת רשימה, בשיעור קובץ טקסט של ארבעה שרתים, ומספר הסיבובים נקבע לפי מספר השורות בה.
2. משתנה לולאה: בכל סיבוב הערך הבא מהרשימה נכנס למשתנה, למשל $i. בשיעור השתמשו בפקודת cut כדי להפיק את הרשימה ממקור הקובץ.
3. גוף הלולאה: בין do ל-done כותבים את הפעולה שתבוצע לכל ערך, למשל echo $i כדי להציג את כל הערכים אחד אחרי השני.
4. סגירה: do יכול להופיע באותה שורה אחרי נקודה-פסיק, או בשורה נפרדת. שתי הצורות תקינות.
הדגמה: בדיקת פינג
1. קובץ רשימה: שמות או כתובות IP בשורה לכל שרת.
2. פעולה לכל שורה: בתוך הלולאה מופעל פינג אחד לכל שרת, כך שהסקריפט רץ פעם אחת על כל כתובת.
3. השהיה: בשיעור הוסיפה השהיה קצרה בין הפעולות כדי שאפשר יהיה לראות את המעבר בין השרתים.
לולאה בתוך לולאה: בדיקת פורטים
1. שתי רשימות: רשימת שרתים ורשימת פורטים, למשל 22 ו-80.
2. לולאה מקוננת: הלולאה החיצונית עוברת על השרתים והפנימית על הפורטים. כל שרת נבדק עבור כל פורט.
3. סריקה ושמירה: בעזרת כלי הסריקה nmap נבדק כל שרת, והפלט נשמר לקובץ זמני. בתוך הקובץ מחפשים את הפורט, ורק אם הוא נמצא נכתבת שורה לקובץ התוצאה.
4. תיקוני טעויות: בזמן ההרצה התגלו שכחת cut ושגיאות בשם הקובץ. המרצה מדגים את תהליך האיתור והתיקון.
שימו לב
לולאה מקוננת מכפילה את מספר הפעולות, ולכן כדאי לחשוב על מספר הסיבובים לפני ההרצה. טעויות כמו שם קובץ שגוי או שכחת cut הן הנפוצות ביותר בסקריפטים מסוג זה.
אחרי השיעור תוכלו להשתמש בלולאת for כדי להריץ פעולה על כל שורה ברשימה.
השיעור הבא בקורס: סקריפט עם case
לחץ כאן להורדת הורדת קבצי 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.


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

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

  1. 00:00

    לולאת for לעומת while

  2. 01:04

    קובץ או משתנה כמנוע הלולאה

  3. 02:21

    ריצה לפי מספר השורות בקובץ

  4. 03:22

    המבנה for i in

  5. 05:26

    קובץ עם רשימת שרתים

  6. 07:12

    היתרונות של for ברשימות

  7. 10:36

    ping לכל שרת מהרשימה

  8. 12:24

    הוספת echo ו-sleep לפלט

תמלול ההרצאה: סקריפט עם לולאת for

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

  1. 00:22

    המשך שלנו בנושא לולאות, אני רוצה לדבר איתכם על לולאת פור, F.O.R. בחלק ח' זה המשך של חלק ח' שמדבר על לולאות בכלל, וכבר הזכרנו את הלולאת וייל.

  2. 00:35

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

  3. 01:01

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

  4. 01:17

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

  5. 01:33

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

  6. 02:20

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

  7. 02:46

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

  8. 03:18

    הכוונה היא שברגע שניתן לפור, ללולת פור שלנו, ניתן לה מסמך עם ארבע שורות, ה-for ייראה כך, for, בוא נעשה את זה רק באנגלית, for i in for i, ו-i הכוונה, i זה המשתנה שאני רוצה להשתמש בו, in cut הפייל נקודת טקסט שלנו, do, ואז אני אעשה למשל echo $i ו-done.

  9. 04:00

    מה שקורה בעצם זה שהלולאת for הזאתי עכשיו שיצרתי, היא תקבל מנוע של מספר השורות שיש בקובץ הזה, ובנוסף כל שורה בקובץ תיכנס בכל סיבוב, כל פעם שתהיה לולאה, כל לולאה שקורית השורה הבאה תיכנס לתוך ה-I.

  10. 04:24

    אז במקרה של ה-4 שלפניכם פה אני פשוט עושה אקו של הדולר I כדי להציג לכם את כל שורה ושורה. אולי בשניות האלה זה לא נראה לכם כמו משהו מטורף ומגניב, תאמינו לי זה מגניב ומטורף.

  11. 04:39

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

  12. 06:07

    בואו נתחיל בעבודה עם רשימה, עכשיו נראה רק לשמור את הקובץ הזה, v i, בעצם אני חושב שכבר היה לנו פה רשימה איפשהו של שרתים, לא ls מינוס l, אני חושב שהיה לנו פה רשימה, כן, server list, אוקיי?

  13. 06:23

    server list, בואו נראה, אז פה אם אתם רוצים, אם אתם יכולים לראות, אני רוצה ממש שזה יעבוד לנו יפה, אז בואו נעשה גם כתובת IP 192.168.1.138.192.168.1.144.

  14. 06:40

    הנה רשימה של שרתים שיש לי, והמון המון המון המון המון פעמים אני משתמש בפור כשיש לי רשימה של פורטים, רשימה של סרוויסיז, רשימה של שרתים, רשימה של כתובות IP, רשימה של קבצים, רשימה של תיקיות.

  15. 06:58

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

  16. 07:19

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

  17. 08:32

    ch mode 10 ובואו נפעיל את הסקריפט שלנו והסקריפט מספר לי תשמע אנחנו הולכים עכשיו להפעיל את ה.. אנחנו הולכים ל.. the script is about to run to use this list and I'm looking at the list בואו נערוך את הקובץ הזה עוד פעם אוקיי זה חלק רק שנייה אחת פה שימו לב שלא צריך פה משתנה ולא שום דבר אנחנו נשתמש במשתנה שיקבל בעצמו

  18. 10:43

    את המנוע מתוך הקובץ ואת המידע את ה-content for i in הסימן הזה הקטן של ה ליד ה-tilda cut כלומר תציג את ה-serverlist.h.txt סוגר את זה דרך אגב טיפ קטן כל פעם שהראתי לכם do ו-then שמתם לב ששמתי נקודה פסיק ואז עשיתי do או-then נכון אם בא לכם אתם יכולים גם לעשות פשוט לעשות enter ולרדת שורה וישר לרשום do, יש כאלה שאוהבים את זה יותר כי זה נראה

  19. 11:24

    יותר כמו פיתוח של תוכנה כזה, ממש כמו תוכנית, לא אכפת לי שתעשו את זה, ואז לא צריך את הנקודה פסיק. ping -c פעם אחת לדולר i. הבנתם את הרעיון? ה-i כל פעם יקבל שורה אחרת מהקובץ.

  20. 11:43

    שורה אחרת, הכוונה שם שרת או IP. done, that's it. for i, בשביל i, in server list, בעזרת cut, האוטפוט הזה יישלח לתוך ה-4 וכל פעם שתהיה שורה חדשה ה-i ישתנה.

  21. 12:07

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

  22. 12:18

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

  23. 12:46

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

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

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

ההרצאה הבאה: סקריפט עם case

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

  • לולאת for
  • לולאת Do - While
  • לולאת For ב-SSIS - חלק 1
  • הדגמה של סקריפט אמיתי

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

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