כיצד לקבל מיקום גיאוגרפי של המערכת שלך מתוך סקריפט
אתה יכול למצוא את המיקום הגיאוגרפי של מערכת לינוקס מרחוק באמצעות API פתוח סקריפט פשוט bash. Geolocating שרת יכול לעזור לך לעקוב אחר זה בעולם הפיזי, להבטיח שרתים ממוקמים נקודות חמות אזוריות.
לכל שרת באינטרנט יש כתובת IP הפונה לציבור. אפשרות זו מוקצית ישירות לשרת, או מוקצית לנתב ששולח תנועה לשרת זה. כתובות IP מעניקות לנו מושג היכן השרת נמצא בעולם. אנחנו יכולים לקבל את הנתונים geolocation דרך שני ממשקי API פתוחים, המסופקים על ידי ipinfo.co ו- IP Vigilante ולהשתמש בו כדי לראות את העיר, המדינה, המדינה המשויכת שרת או מערכת מרוחקת אחרת. זה לא נותן לך מיקום GPS מדויק; זה רק מאפשר לך לראות את השטח הכללי של כתובת ה- IP.
התחבר למערכת מרוחקת
אתה תהיה להפעיל את הפקודות הבאות בשרת לינוקס או מערכות מרוחקות אחרות שברצונך geolocate, אז אתה חייב להתחבר לשרת לגשת פגז על זה קודם. לדוגמה, תוכל להתחבר באמצעות SSH. אתה יכול להפעיל את הפקודות על המערכת המקומית שלך כדי למצוא את המיקום שלה, אבל אתה בטח כבר יודע איפה אתה!
התקן סלסול ו- jq
אנחנו צריכים שני כלים כדי לגשת API geolocation: תלתל
כדי להפוך בקשות HTTP ו jq
כדי לעבד את נתוני JSON שאנחנו מקבלים בחזרה. פתח מסוף והשתמש בו apt-get
כדי להתקין את הכלים האלה על מערכות מבוססות אובונטו או דביאן. בהפצות לינוקס אחרות, השתמש במקום זאת בכלי ההתקנה של חבילת ההפצה של לינוקס.
sudo apt-get להתקין סלסול jq
מצא את כתובת ה- IP הציבורית של השרת
אנחנו גם צריכים את כתובת ה- IP הציבורית של השרת לפני שנוכל לקבל את הנתונים geolocation. להשתמש תלתל
כדי לבצע שיחת API ל- ipinfo.io בחלון המסוף.
סלסל https://ipinfo.io/ip
קבל נתוני מיקום מתוך ממשק ה- API
עכשיו שיש לנו את ה- IP הציבורי של השרת, אנחנו יכולים להתקשר אל ה- API של ipvigilante.com כדי לקבל את הנתונים geolocation. החלף עם הכתובת שחזרה בפקודה הקודמת.
curl https://ipvigilante.com/
הבה נבחן מקרוב את הנתונים שאנו מקבלים בחזרה מהשיחה הזו:
ממשק ה- API מחזיר את העיר, הארץ והיבשת, שבה מתגורר השרת שלנו. היא גם מחזירה את הקואורדינטות המקוריות של קווי הרוחב והאורך, למקרה שתרצה לצייר שרת זה במפה אינטראקטיבית. אנו נשתמש ב- "קו רוחב", "קו אורך", "city_name" ו- "country_name" בסקריפט שלנו. ה jq
הפקודה מבינה כיצד לעבד את נתוני ה- API ולחלץ את ארבעת השדות האלה.
יצירת סקריפט כדי להפוך את שיחת ה- API
אנחנו יכולים ליצור סקריפט תופס את הנתונים geolocation וכותב אותו לקובץ בפורמט CSV. הנתונים ייכתבו לקובץ הנקרא server_location.txt
בתוך ה / tmp /
ספרייה. פתח את העורך המועדף עליך וצור סקריפט בשם geolocate.sh
. הכנס את תוכן הסקריפט המוצג למטה, והקפד להחליף את כתובת ה- IP בשלך:
#! / bin / sh OUTPUT_FILE = / tmp / server_location.txt # תפוס את כתובת ה- IP הציבורית של השרת PUBLIC_IP = "curl-s https://ipinfo.io/ip" # התקשר לממשק ה- API של המיקום הגיאוגרפי ותפס את הפלט של סליל -s https : //ipvigilante.com/$ PUBLIC_IP | \ jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | \ בעוד לקרוא -R LATITUDE; לעשות לקרוא לקרוא LONGITUDE לקרוא -R CITY לקרוא -R COUNTRY הד "$ LATITUDE, $ LONGITUDE, $ CITY, $ COUNTRY | \ tr --delete \ "> \ $ OUTPUT_FILE בוצע
שמור את התסריט וחזור למסוף. הפוך את קובץ ה- Script להפעלה מהמסוף, על ידי הענקת הרשאת ביצוע בקובץ זה.
u + x geolocate.sh
עכשיו אתה מוכן לבדוק את זה. הפעל את geolocate.sh
סקריפט לבדוק את התוכן של קובץ הפלט:
./geolocate.sh cat /tmp/server_location.txt
עדכון נתונים Geolocation פעם ביום עם עבודה Cron
בואו ליצור עבודה cron כדי להפוך את השרת שלנו עדכון geolocation ולשמור אותו לקובץ פעם ביום. את העבודה cron היומי מעדכן קובץ שנקרא server_location.txt
בתוך ה / tmp /
תיקיית השרת. יצירת עבודה 24 שעות cron הוא קל כמו לשים את התסריט שלנו לתוך /etc/cron.daily
ספרייה. אנו חייבים להשתמש בפקודת sudo כדי להעתיק את הקובץ כמשתמש הבסיס, כדי למנוע בעיות הרשאה. הפעל את הפקודה הבאה להעתקה geolocate.sh
אל ה /etc/cron.daily
ספרייה.
supo cp geolocate.sh /etc / cron.daily
שינויים אלה הם מיידיים, ואת התסריט שלנו יפעל כל 24 שעות כדי לעדכן את התוכן של /tmp/server_location.txt
קובץ. אנו יכולים להשתמש בנתונים אלה כדי לעשות דברים מעניינים, כגון התוויית השרתים שלנו במפה וכן שילוב גיאוגרפי עם יומני תנועה כדי לראות היכן בעולם נקודות החמה של השרת שלנו.