รับข้อมูลตำแหน่งทางภูมิศาสตร์ของที่อยู่ IP ใน Bash ใน Linux
บางครั้งคุณจำเป็นต้องได้รับข้อมูลตำแหน่งทางภูมิศาสตร์สำหรับที่อยู่ IP อย่างรวดเร็ว ใน Linux คุณสามารถใช้พลังของแอปคอนโซลเพื่อประหยัดเวลาและดึงข้อมูลนี้ได้อย่างรวดเร็ว มาดูกันว่าจะทำได้อย่างไร
โฆษณา
ในการรับข้อมูลตำแหน่งทางภูมิศาสตร์เกี่ยวกับที่อยู่ IP เฉพาะ คุณต้องใช้บริการออนไลน์ที่มี API ที่เหมาะสม เป็นความคิดที่ดีที่จะใช้บริการสาธารณะเพื่อหลีกเลี่ยงขั้นตอนการอนุญาตและการจัดการคีย์ API หนึ่งในบริการดังกล่าวคือ FreeGeoIP.net.
ให้บริการ HTTP API สาธารณะเพื่อค้นหาตำแหน่งทางภูมิศาสตร์ของที่อยู่ IP ใช้ฐานข้อมูลของที่อยู่ IP ที่เชื่อมโยงกับเมืองต่างๆ พร้อมกับข้อมูลที่เกี่ยวข้องอื่นๆ เช่น เขตเวลา ละติจูด และลองจิจูด สิ่งนี้มีประโยชน์มาก
บริการสามารถให้ผลการค้นหาเป็น JSON หรือ XML ดังนั้น หากเรารวม curl กับตัวแยกวิเคราะห์ JSON เราจะได้รับข้อมูลที่จำเป็น
ฉันจะใช้ตัวแยกวิเคราะห์ JSON ที่ฉันโปรดปราน jq:
มีน้ำหนักเบาและรวดเร็ว
สำหรับกรณีของเรา แบบสอบถามควรเป็นดังนี้:
http://freegeoip.net/json/119.94.116.145
ส่วน "json" ที่นี่เป็นรูปแบบข้อมูลที่ต้องการ นอกจาก JSON แล้ว มันอาจเป็น XML หรือ CSV
เรียกใช้แบบสอบถามด้วย curl และดูผลลัพธ์:
ผลลัพธ์คือเอาต์พุต JSON แบบดิบซึ่งอ่านยาก เพื่อปรับปรุงรูปลักษณ์ของชุดผลลัพธ์ ให้ใช้เครื่องมือ jq รวมกับ curl ดังนี้:
ขด 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/$1|jq -r '.country_name,.latitude,.longitude'
ครั้งต่อไปที่คุณต้องการรับข้อมูลตำแหน่งทางภูมิศาสตร์ คุณสามารถเรียกใช้สคริปต์ของคุณดังนี้:
./geo.sh IP_address
แค่นั้นแหละ.