Στο επόμενο άρθρο θα ρίξουμε μια ματιά στο πώς μπορούμε λάβετε τη γεωγραφική θέση της δημόσιας διεύθυνσης IP μας. Θα μπορέσουμε να το κάνουμε αυτό μέσω ανοιχτών API και ενός απλού σεναρίου bash, όλα από το τερματικό του Ubuntu. Σήμερα, όλες οι συσκευές που είναι συνδεδεμένες στο Διαδίκτυο έχουν μια IP, η οποία ήταν η ταυτότητά τους στον κόσμο. Αυτή η διεύθυνση θα χρησιμοποιήσουμε για να λάβουμε την τοποθεσία σας.
Όταν σερφάρουμε στο Διαδίκτυο, κάθε διακομιστής έχει μια δημόσια διεύθυνση IP, αυτό εκχωρείται απευθείας στον διακομιστή ή μέσω ενός δρομολογητή που στέλνει κίνηση δικτύου σε αυτόν τον διακομιστή. Οι διευθύνσεις IP παρέχουν έναν εύκολο τρόπο παρακολούθησης της γεωγραφικής θέσης του διακομιστή στον κόσμο. Αυτό μπορεί να επιτευχθεί χρησιμοποιώντας δύο API που παρέχονται από ipinfo.io e ipvigilante.com με την οποία θα είμαστε σε θέση να αποκτήσουμε τη χώρα του διακομιστή, το όνομα της πόλης και τις γεωγραφικές συντεταγμένες της.
Στις ακόλουθες γραμμές θα δούμε πώς να πάρει το γεωγραφική θέση μιας IP από το τερματικό βοηθώντας μας με μπούκλα και jq. Ο κύριος σκοπός και η χρήση για cURL είναι η αυτοματοποίηση των μεταφορών αρχείων ή των μη εποπτευόμενων ακολουθιών λειτουργιών, ενώ jq είναι μια λειτουργική γλώσσα υψηλού επιπέδου με υποστήριξη για παρακολούθηση και διαχείριση ροών δεδομένων JSON.
Γεωγραφική θέση ενός IP από το τερματικό
Εγκαταστήστε το Curl και jq
Για να λάβουμε τη γεωγραφική θέση της διεύθυνσης IP, πρέπει να εγκαταστήστε μπούκλα και εργαλείο γραμμής εντολών jq για την επεξεργασία των δεδομένων JSON που λαμβάνονται από τα API γεωγραφικής θέσης. Για να εγκαταστήσετε και τα δύο, σε ένα τερματικό (Ctrl + Alt + T) θα πρέπει να γράψετε την εντολή:
sudo apt install curl jq
Λάβετε τη δημόσια διεύθυνση IP του διακομιστή
Πριν πάρετε την τοποθεσία, πρέπει να γνωρίζετε τη δημόσια διεύθυνση IP του διακομιστή στον οποίο συνδέουμε. Για αυτό, θα χρησιμοποιήσουμε την ακόλουθη εντολή cURL με την οποία θα υποβάλουμε ένα αίτημα ipinfo.io από το τερματικό (Ctrl + Alt + T) όπως φαίνεται παρακάτω:
curl https://ipinfo.io/ip
Λάβετε τα δεδομένα της γεωγραφικής θέσης της IP του συστήματός σας χάρη στο API
Μετά την εκτέλεση της προηγούμενης εντολής θα λάβουμε τη δημόσια διεύθυνση IP. Μόλις το έχουμε, θα είμαστε σε θέση υποβάλετε αίτημα στο ipvigilante.com για να λάβετε δεδομένα γεωγραφικής τοποθεσίας. Για αυτό θα χρησιμοποιήσουμε την ακόλουθη εντολή στο τερματικό (Ctrl + Alt + T). Είναι σημαντικό να αντικαταστήσετε τη δημόσια IP με αυτήν που αποκτήθηκε με την προηγούμενη εντολή.
curl https://ipvigilante.com/la-dirección-IP
Αυτοματοποιήστε την κλήση API χρησιμοποιώντας το Bash Script
Για να αυτοματοποιήσουμε τη διαδικασία επικοινωνίας με το API που πρόκειται δημιουργήστε ένα σενάριο μέσα σε ένα αρχείο που ονομάζεται ipgeolocator.sh (το όνομα είναι προαιρετικό). Για τη δημιουργία του θα είμαστε σε θέση να χρησιμοποιήσουμε οποιοδήποτε πρόγραμμα επεξεργασίας για τη γραμμή εντολών με την οποία ο καθένας αισθάνεται πιο άνετα.
vim ipgeolocalizador.sh
Όταν ανοίξει το πρόγραμμα επεξεργασίας, πρέπει απλά να το κάνετε επικολλήστε τη γραμμή Φαίνεται παρακάτω:
curl -s https://ipvigilante.com/$(curl -s https://ipinfo.io/ip) | jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name'
Μόλις επικολληθεί, το μόνο που έχετε να κάνετε είναι να αποθηκεύσετε το αρχείο και να βγείτε από τον επεξεργαστή. Μετά από αυτό θα είναι απαραίτητο Κάντε το σενάριο εκτελέσιμο. Θα το κάνουμε αυτό γράφοντας στο ίδιο τερματικό:
chmod +x ipgeolocalizador.sh
Σε αυτό το σημείο, μπορούμε εκτελέστε το σενάριο ως εξής για να λάβετε τη γεωγραφική θέση της IP δημόσιο:
./ipgeolocalizador.sh
Το παραπάνω σενάριο εμφανίζει το όνομα της πόλης και της χώρας μαζί με τις συντεταγμένες κατά πλάτος και μήκος. Η αλήθεια είναι ότι Δεν γνωρίζω το περιθώριο σφάλματος που μπορεί να έχει.
Εάν δεν θέλετε να αποθηκεύσετε την παραπάνω μεγάλη εντολή σε ένα αρχείο, Μπορείτε επίσης να εκτελέσετε την ίδια εντολή απευθείας στο τερματικό (Ctrl + Alt + T):
curl -s https://ipvigilante.com/$(curl -s https://ipinfo.io/ip) | jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name'
Σε αυτό το σύντομο άρθρο, έχουμε δει πώς λάβετε γεωγραφική τοποθεσία ενός IP από το Ubuntu χρησιμοποιώντας εντολές τερματικού και curl και jq. Μπορείτε να λάβετε περισσότερες πληροφορίες σχετικά με jq ή περίπου cURL στα αντίστοιχα άρθρα της Wikipedia.