Πώς να αποκτήσετε γεωγραφική θέση του συστήματός σας από ένα σενάριο Bash
Μπορείτε να βρείτε τη γεωγραφική θέση ενός απομακρυσμένου συστήματος Linux χρησιμοποιώντας ανοικτά API και ένα απλό script bash. Η γεωγραφική τοποθέτηση ενός διακομιστή θα μπορούσε να σας βοηθήσει να τον εντοπίσετε στον φυσικό κόσμο, εξασφαλίζοντας ότι οι διακομιστές βρίσκονται σε περιφερειακά hotspots.
Κάθε διακομιστής στο διαδίκτυο έχει μια διεύθυνση IP που αντιμετωπίζει το κοινό. Αυτό είτε εκχωρείται απευθείας στον διακομιστή είτε αντιστοιχεί σε δρομολογητή που αποστέλλει επισκεψιμότητα στον συγκεκριμένο διακομιστή. Οι διευθύνσεις IP μας δίνουν μια ιδέα για το πού βρίσκεται ο διακομιστής στον κόσμο. Μπορούμε να λάβουμε αυτά τα δεδομένα γεωγραφικής κατανομής μέσω δύο ανοιχτών API που παρέχονται από ipinfo.co και IP Vigilante και να το χρησιμοποιήσουμε για να δούμε την πόλη, την πολιτεία και τη χώρα που σχετίζονται με έναν διακομιστή ή άλλο απομακρυσμένο σύστημα. Αυτό δεν σας δίνει ακριβή θέση GPS. απλά σας επιτρέπει να δείτε τη γενική περιοχή της διεύθυνσης IP.
Συνδεθείτε σε ένα απομακρυσμένο σύστημα
Θα εκτελέσετε τις παρακάτω εντολές στον εξυπηρετητή Linux ή σε άλλα απομακρυσμένα συστήματα που θέλετε να γεωγραφείτε, οπότε πρέπει πρώτα να συνδεθείτε στο διακομιστή και να αποκτήσετε πρόσβαση σε ένα κέλυφος. Για παράδειγμα, μπορείτε να συνδεθείτε μέσω SSH. Θα μπορούσατε να εκτελέσετε τις εντολές στο τοπικό σας σύστημα για να βρείτε τη θέση του, αλλά ίσως ήδη γνωρίζετε πού βρίσκεστε!
Εγκαταστήστε μπούκλα και jq
Χρειαζόμαστε δύο εργαλεία για να αποκτήσετε πρόσβαση στο API γεωγραφικής κατανομής: μπούκλα
να κάνουν αιτήματα HTTP και jq
για να επεξεργαστούμε τα δεδομένα JSON που έχουμε πίσω. Ανοίξτε ένα τερματικό και χρησιμοποιήστε το apt-get
για να εγκαταστήσετε αυτά τα εργαλεία σε συστήματα που βασίζονται στο Ubuntu ή στο Debian. Σε άλλες διανομές Linux, χρησιμοποιήστε το εργαλείο εγκατάστασης του πακέτου διανομής Linux.
sudo apt-get να εγκαταστήσετε την καμπύλη jq
Βρείτε τη δημόσια διεύθυνση IP του διακομιστή
Χρειαζόμαστε επίσης τη δημόσια διεύθυνση IP του διακομιστή πριν μπορέσουμε να λάβουμε τα δεδομένα γεωγραφικής κατανομής. Χρήση μπούκλα
για να πραγματοποιήσετε μια κλήση API στο ipinfo.io στο παράθυρο του τερματικού σας.
curl https://ipinfo.io/ip
Λάβετε δεδομένα τοποθεσίας από το API
Τώρα που έχουμε την δημόσια IP του διακομιστή, μπορούμε να καλέσουμε το API του ipvigilante.com για να πάρουμε τα δεδομένα γεωγραφικής κατανομής. Αντικαθιστώ με τη διεύθυνση που επέστρεψε στην προηγούμενη εντολή.
curl https://ipvigilante.com/
Ας ρίξουμε μια πιο προσεκτική ματιά σε ποια δεδομένα επιστρέφουμε από αυτή την κλήση:
Το API επιστρέφει την πόλη, τη χώρα και την ήπειρο, στην οποία βρίσκεται ο διακομιστής μας. Επιστρέφει επίσης τις συντεταγμένες κατά προσέγγιση γεωγραφικού πλάτους και μήκους, σε περίπτωση που θέλουμε να σχεδιάσουμε αυτόν το διακομιστή σε ένα διαδραστικό χάρτη. Θα χρησιμοποιήσουμε το "γεωγραφικό πλάτος", "γεωγραφικό μήκος", "city_name" και "country_name" στη δέσμη ενεργειών μας. ο jq
η εντολή κατανοεί τον τρόπο επεξεργασίας των δεδομένων API και εξάγει αυτά τα τέσσερα πεδία.
Δημιουργία δέσμης ενεργειών για την αυτοματοποίηση της κλήσης API
Μπορούμε να δημιουργήσουμε μια δέσμη ενεργειών που συλλαμβάνει τα δεδομένα γεωγραφικής κατανομής και τα γράφει σε ένα αρχείο σε μορφή CSV. Τα δεδομένα θα γραφτούν σε ένα αρχείο που ονομάζεται server_location.txt
στο / tmp /
Ευρετήριο. Ανοίξτε τον αγαπημένο σας επεξεργαστή και δημιουργήστε ένα σενάριο με όνομα geolocate.sh
. Εισαγάγετε τα περιεχόμενα της δέσμης ενεργειών που εμφανίζονται παρακάτω και φροντίστε να αντικαταστήσετε τη διεύθυνση IP με τη δική σας:
#! / bin / sh OUTPUT_FILE = / tmp / server_location.txt # Πιάσε τη δημόσια IP διεύθυνση του διακομιστή PUBLIC_IP = "κούρσα -s https://ipinfo.io/ip" # Καλέστε το API γεωγραφικής κατανομής και καταγράψτε το https : //ipvigilante.com/$ PUBLIC_IP | \ jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | \ while read -r LATITUDE; να διαβάσετε -r LONGITUDE ανάγνωση -r CITY read -r ΧΩΡΑ echo "$ LATITUDE, $ LONGITUDE, $ CITY, $ COUNTRY" | \ tr --delete \ "> \ $ OUTPUT_FILE γίνει
Αποθηκεύστε το σενάριο και επιστρέψτε στο τερματικό. Κάντε τη δέσμη ενεργειών εκτελέσιμη από το τερματικό, χορηγώντας την άδεια εκτέλεσης σε αυτό το αρχείο.
chmod u + x geolocate.sh
Τώρα είστε έτοιμοι να το δοκιμάσετε. Εκτελέστε το geolocate.sh
script και ελέγξτε τα περιεχόμενα του αρχείου εξόδου:
./geolocate.sh cat /tmp/server_location.txt
Ενημέρωση των δεδομένων γεωγραφικής θέσης μία φορά την ημέρα με μια εργασία Cron
Ας δημιουργήσουμε μια εργασία cron για να κάνουμε τον διακομιστή μας να ενημερώσει την γεωγραφική του θέση και να το αποθηκεύσει σε ένα αρχείο μία φορά την ημέρα. Η καθημερινή εργασία cron ενημερώνει ένα αρχείο που ονομάζεται server_location.txt
στο / tmp /
φάκελο του διακομιστή. Η δημιουργία μιας εργασίας 24 ωρών cron είναι τόσο εύκολη όσο η τοποθέτηση του σεναρίου μας στο /etc/cron.daily
Ευρετήριο. Πρέπει να χρησιμοποιήσουμε την εντολή sudo για να αντιγράψουμε το αρχείο ως χρήστη root, για να αποφύγουμε ζητήματα αδειών. Εκτελέστε την ακόλουθη εντολή για αντιγραφή geolocate.sh
στο /etc/cron.daily
Ευρετήριο.
sudo cp geolocate.sh /etc/cron.daily
Αυτές οι αλλαγές είναι άμεσες και το σενάριό μας θα εκτελείται κάθε 24 ώρες για την ενημέρωση των περιεχομένων του /tmp/server_location.txt
αρχείο. Μπορούμε να χρησιμοποιήσουμε αυτά τα δεδομένα για να κάνουμε ενδιαφέροντα πράγματα, όπως ο σχεδιασμός των διακομιστών μας σε έναν χάρτη, καθώς και ο συνδυασμός γεωγραφικής κατανομής με τα αρχεία καταγραφής κίνησης για να δούμε πού στον κόσμο είναι τα hotspots των διακομιστών μας.