ישנם מספר דרכים לנהל את כתובת ה-IP והשם המארח של מחשב ה-Ubuntu שלך. למנהלי מערכת יש ברשותם את הכלים nmcli, netplan, hostname ו-hostnamectl. בעוד שהכלים הללו עושים עבודה טובה לבדם, כיצד ניתן לכלול אותם כדי לשדרג את המשחק באוטומציה?
ניתן ליצור סקריפט Bash שיטפל בהגדרות עבורך. במאמר זה, תלמד כיצד להגדיר שם מארח חדש ולהגדיר מידע על כתובת ה-IP, הכל בעזרת סקריפט Bash שמקבל קלטים.
כל דוגמה תבנה על הקודמת. עד סוף המאמר, יהיה לך את הידע הנדרש לבניית סקריפט הגדרה מתקני לשימוש על מארח Ubuntu חדש או קיים.
דרישות מוקדמות
אין צורך להיות מומחה בתסריטות בשל מעטפת Bash כדי לעקוב אחרי המדריך הזה, אך ווודא שיש לך את הדרישות הבאות.
- A host running on Ubuntu. This tutorial uses Ubuntu 22.04 LTS.
- הרשאות root למארח Ubuntu.
- A text editor, such as
vim
,nano
, or VSCode.
הגדרת השם המארח בעזרת hostnamectl
כל מארח צריך לקבל שם ייחודי. באמצעות הפקודה hostnamectl ניתן לשאול או לשנות את השם המארח. במקרה זה, התחביר הוא כפי שמוצג למטה כדי לשנות את שם המארח הנוכחי שלך לכל שם שתבחר.
אני מפעיל את הפקודה hostnamectl עם הפרמטר הנפוץ של set-hostname שמתבצע אחריו ערך מחרוזת בתוך צפיפות (""). אם היית רץ את הפקודה הזו באופן ידני, היא הייתה עובדת ללא בעיה.
אבל מה קורה אם תרצה לכלול את זה בתסריט שמקבל קלט מהמשתמש? התחל עם השימוש בפקודה read, ואז בפרמטר -p, שמציין prompt, ומחרוזת שמסבירה למשתמש מה להזין לקלט הזה. לאחר מכן, שמור את הקלט במשתנה חדש, בשם NEW_HOSTNAME.
לאחר שהשם המארח מאוחסן במשתנה NEW_HOSTNAME, תוכל לספק את המשתנה לפקודת hostnamectl כמו בדוגמה למטה.
וזהו! השלבת שני ה-one-liners האלה מאפשרת לפקודות לעבוד בתסריט! אך יש לך משימה נוספת: להגדיר את אפשרויות הרשת.
הגדרת מידע על כתובת ה-IP עם netplan
פקודת netplan היא השיטה de facto לניהול מידע על כתובת ה-IP של ממשק רשת עבור מחשבי Ubuntu המודרניים. כלי ה-netplan מפשט את ההגדרות של רשת ממגוון שורפים באמצעות קבצי הגדרת YAML.
כלי ה-netplan קורא את קבצי ההגדרה הללו במהלך ההפעלה של המערכת ומחיל אותם על ממשק(י) הרשת היעד. למה זה חשוב, אתה יכול לשאול?
יש לך את התצורה של הרשת שלך ב־YAML מעצים אותך להתחיל לשמור או לגבות את התצורה שלך למאגר Git. ומאחר ו־Git מספק יכולות מעקב אחר שינויים, תוכל להשתמש באותו קובץ תצורה ללא צורך ליצור אותו מחדש עבור הפרטות הבאות בפעם הבאה שתרצה להפעיל באמצעות צינורות CI/CD. אתה יודע, DevOps!
לפני שתוסיף שורות לקובץ התצורה, עליך ליצור את קובץ התצורה באמצעות פקודת ה־touch.
הפקודה הנ"ל תכניס את קובץ התצורה החדש אל תיקיית הבית שלך. מכאן, תפעיל את פקודת ה־echo כדי להדפיס את מה שאתה מקליד ולהכניס את זה לתוך קובץ התצורה שורה אחר שורה באמצעות הפניית קלט ל־STDOUT באמצעות > (להוסיף) ו־>> (להוספה).
הערה: יש להשתמש ברווחים כפולים ולא בטאבים להזחה ב־YAML.
עם כל פקודת echo, אתה בונה את קובץ התצורה ב־YAML בעזרת הזנת קלט תואם באמצעות STDOUT. באופן אלטרנטיבי, תוכל לבנות את קובץ זה באופן ידני באמצעות עורך טקסט. אך אין צורך לבנות את הקובץ באופן ידני.
במקום זאת, דרוש לעצור את המשתמש להזין את פרטי כתובת ה־IP שאתה צריך באמצעות פקודת ה־read
זהה.
טיפ: אחת הדרכים לרשום את כל מידע ממשקי הרשת ב־Ubuntu היא על ידי הרצת הפקודה ip address.
ישנן המון נכונויות נוספות שאפשר להגדיר שאין להם דיון מעמיק במדריך הזה. אם ברצונך לראות נכסים נוספים שקרובים, הקפד לקרוא את דפי הסיוע של Netplan.
עם האפשרויות של הרשת השולמוות, הגיע הזמן לבנות סקריפט יחיד!
איך לשים הכל יחד בסקריפט Bash
עכשיו, תשלב את כל הדברים לתוך סקריפט Bash יחיד עם מה שלמדת מהסעיפים הקודמים. פתח את העורך שלך, הדבק את הקוד למטה, ושמור את הקובץ כ ~/host_deploy.sh
.
כדי להריץ את הסקריפט, הריצו את הפקודה הבאה כדי לקרוא את הסקריפט עם bash
בטרמינל שלכם.
הסקריפט מעז לך להזין שם מארח חדש ומידע על כתובת IP ומזכיר לך לאתחל את המארח כדי שהשינויים ייכנסו לתוקף.
עכשיו שיש לך סקריפט פועל בתיקיית המשתמש שלך, ניתן ליצור תמונה זהב לשימוש חוזר או לשיתוף עם טכנאים ואלה שמבצעים את המשימה הזו באופן קבוע.
סיכום
מזל טוב! הצלחת! הגעת לסוף המאמר ובנית סקריפט Bash מאוד פועלי שתוכל להשתמש בו מספר פעמים.
אתה יכול גם לנסות להשתמש בסקריפט הזה עם Ansible ולענות על השאלות באמצעות משחק Ansible. המשימות במדריך זה הן רק דוגמה קטנה של פריטי הגדרה ראשוניים שתוכל להתחיל להשתמש בהם בסקריפטים שלך לבנייה והפצת התוכנה שלך.
עכשיו אתה יודע לקבל קלט מהמשתמש, להגדיר פרמטרים בסיסיים של מערכת באמצעות סקריפט Bash, ולהחיל את הטכניקה הזו בשינוי שמות מארחים וכתובות IP ב-Ubuntu Linux.
Source:
https://adamtheautomator.com/change-linux-ip-hostname-bash-script/