Μερικές φορές πρέπει να λάβετε γρήγορα τις πληροφορίες γεωγραφικής τοποθεσίας για μια διεύθυνση IP. Στο Linux, μπορείτε να χρησιμοποιήσετε τη δύναμη των εφαρμογών κονσόλας για να εξοικονομήσετε χρόνο και να ανακτήσετε αυτές τις πληροφορίες γρήγορα. Ας δούμε πώς μπορεί να γίνει.
Διαφήμιση
Για να λάβετε τις πληροφορίες γεωγραφικής τοποθεσίας σχετικά με μια συγκεκριμένη διεύθυνση IP, πρέπει να χρησιμοποιήσετε κάποια διαδικτυακή υπηρεσία που παρέχει το κατάλληλο API. Είναι καλή ιδέα να χρησιμοποιήσετε κάποια δημόσια υπηρεσία για να αποφύγετε τη διαδικασία εξουσιοδότησης και τη διαχείριση κλειδιών API. Μια τέτοια υπηρεσία είναι FreeGeoIP.net.
Παρέχει ένα δημόσιο HTTP API για αναζήτηση στη γεωγραφική τοποθεσία των διευθύνσεων IP. Χρησιμοποιεί μια βάση δεδομένων διευθύνσεων IP που σχετίζονται με πόλεις μαζί με άλλες σχετικές πληροφορίες, όπως ζώνη ώρας, γεωγραφικό πλάτος και μήκος. Αυτό είναι πολύ χρήσιμο.
Η υπηρεσία μπορεί να παρέχει αποτελέσματα αναζήτησης ως JSON ή XML. Έτσι, εάν συνδυάσουμε το curl με κάποιο JSON parser, μπορούμε να λάβουμε τις απαιτούμενες πληροφορίες.
πώς να ανεβάσω το σκορ μου
Θα χρησιμοποιήσω τον αγαπημένο μου JSON parser, jq:
Είναι πολύ ελαφρύ και γρήγορο.
Για την περίπτωσή μας, το ερώτημα πρέπει να έχει ως εξής:
http://freegeoip.net/json/119.94.116.145
Το τμήμα 'json' εδώ είναι η επιθυμητή μορφή δεδομένων. Εκτός από το JSON, μπορεί να είναι XML ή CSV.
Ας εκτελέσουμε το ερώτημα με μπούκλα και να δούμε την έξοδο:
Το αποτέλεσμα είναι ακατέργαστη έξοδος JSON που είναι δύσκολο να διαβαστεί. Για να βελτιώσουμε την εμφάνιση του συνόλου αποτελεσμάτων, ας χρησιμοποιήσουμε το εργαλείο jq. Συνδυάστε το με μπούκλα ως εξής:
μπούκλα http://freegeoip.net/json/119.94.116.145|jq
Η έξοδος θα είναι ευκολότερη στην ανάγνωση:
Χρησιμοποιώντας το jq, μπορείτε να φιλτράρετε την έξοδο και να την εμφανίσετε μόνο τα απαιτούμενα πεδία. Η ακόλουθη εντολή θα εμφανίσει μόνο το όνομα της χώρας, το γεωγραφικό πλάτος και το μήκος:
μπούκλα http://freegeoip.net/json/119.94.116.145|jq -r '.country_name, .latitude, .longitude'
Μπορείτε να αποθηκεύσετε αυτήν την εντολή ως το ακόλουθο σενάριο κελύφους:
#! / bin / sh curl -s http://freegeoip.net/json/|jq -r '.country_name, .latitude, .longitude'
Την επόμενη φορά που θα πρέπει να λάβετε πληροφορίες γεωγραφικής τοποθεσίας, μπορείτε να εκτελέσετε το σενάριό σας ως εξής:
./geo.sh IP_address
Αυτό είναι.