โฮมเพจ » ทำอย่างไร » วิธีรับตำแหน่งทางภูมิศาสตร์ของระบบจาก Bash Script

    วิธีรับตำแหน่งทางภูมิศาสตร์ของระบบจาก Bash Script

    Toria / Shutterstock.com

    คุณสามารถค้นหาตำแหน่งทางภูมิศาสตร์ของระบบ Linux ระยะไกลได้โดยใช้ API แบบเปิดและสคริปต์ทุบตีแบบง่าย การระบุตำแหน่งทางภูมิศาสตร์เซิร์ฟเวอร์สามารถช่วยให้คุณติดตามในโลกทางกายภาพได้ทำให้มั่นใจได้ว่าเซิร์ฟเวอร์อยู่ในฮอตสปอตระดับภูมิภาค.

    เซิร์ฟเวอร์แต่ละเครื่องบนอินเทอร์เน็ตมีที่อยู่ IP สาธารณะ นี่คือการกำหนดโดยตรงไปยังเซิร์ฟเวอร์หรือมอบหมายให้เราเตอร์ที่ส่งปริมาณการใช้งานไปยังเซิร์ฟเวอร์นั้น ที่อยู่ IP ช่วยให้เราทราบว่าเซิร์ฟเวอร์นั้นตั้งอยู่ที่ใดในโลก เราสามารถรับข้อมูลตำแหน่งทางภูมิศาสตร์นี้ผ่าน API แบบเปิดสองแห่งซึ่งจัดทำโดย ipinfo.co และ IP Vigilante และใช้เพื่อดูเมืองรัฐและประเทศที่เกี่ยวข้องกับเซิร์ฟเวอร์หรือระบบระยะไกลอื่น ๆ สิ่งนี้ไม่ได้ให้ตำแหน่ง GPS ที่แม่นยำแก่คุณ มันช่วยให้คุณเห็นพื้นที่ทั่วไปของที่อยู่ IP.

    เชื่อมต่อกับระบบระยะไกล

    คุณจะใช้คำสั่งต่อไปนี้บนเซิร์ฟเวอร์ Linux หรือระบบระยะไกลอื่น ๆ ที่คุณต้องการระบุตำแหน่งทางภูมิศาสตร์ดังนั้นคุณต้องเชื่อมต่อกับเซิร์ฟเวอร์และเข้าถึงเชลล์ที่อยู่ก่อน ตัวอย่างเช่นคุณอาจเชื่อมต่อผ่าน SSH คุณสามารถเรียกใช้คำสั่งบนระบบโลคัลของคุณเพื่อค้นหาตำแหน่ง แต่คุณอาจรู้อยู่แล้วว่าคุณอยู่ที่ไหน!

    ติดตั้ง curl และ jq

    เราต้องการเครื่องมือสองอย่างเพื่อเข้าถึง API ตำแหน่งทางภูมิศาสตร์: ขด เพื่อร้องขอ HTTP และ  JQ เพื่อประมวลผลข้อมูล JSON ที่เราได้รับกลับมา เปิดเทอร์มินัลแล้วใช้  apt-get เพื่อติดตั้งเครื่องมือเหล่านี้บนระบบ Ubuntu หรือ Debian บน Linux ดิสทริบิวชันอื่นให้ใช้เครื่องมือติดตั้งแพ็กเกจการกระจาย Linux ของคุณแทน.

    sudo apt-get curl jq

    ค้นหาที่อยู่ IP สาธารณะของเซิร์ฟเวอร์

    เราต้องการที่อยู่ IP สาธารณะของเซิร์ฟเวอร์ก่อนที่เราจะได้รับข้อมูลตำแหน่งทางภูมิศาสตร์ ใช้ ขด เพื่อทำการเรียก API ไปยัง ipinfo.io ในหน้าต่างเทอร์มินัลของคุณ.

    https://ipinfo.io/ip

    รับข้อมูลตำแหน่งจาก API

    ตอนนี้เรามี IP สาธารณะของเซิร์ฟเวอร์แล้วเราสามารถโทรหา API ของ ipvigilante.com เพื่อรับข้อมูลตำแหน่งทางภูมิศาสตร์ แทนที่ ด้วยที่อยู่ที่กลับมาในคำสั่งก่อนหน้า.

    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 = "curl -s https://ipinfo.io/ip" # โทร API ตำแหน่งทางภูมิศาสตร์และจับเอาต์พุต curl -s https : //ipvigilante.com/$ PUBLIC_IP | \ jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | \ ในขณะที่อ่าน -r LATITUDE; ทำการอ่าน -r LONGITUDE read -r CITY read -r COUNTRY echo "$ LATITUDE, $ LONGITUDE, $ CITY, $ COUNTRY" | \ tr - ลบ \ "> \ $ OUTPUT_FILE เรียบร้อยแล้ว 

    บันทึกสคริปต์และกลับไปที่เทอร์มินัล ทำให้สคริปต์เรียกใช้งานได้จากเทอร์มินัลโดยการให้สิทธิ์การเรียกใช้งานกับไฟล์นี้.

    chmod u + x geolocate.sh

    ตอนนี้คุณพร้อมที่จะทดสอบแล้ว เรียกใช้ geolocate.sh สคริปต์และตรวจสอบเนื้อหาของไฟล์ที่ส่งออก:

    ./geolocate.sh cat /tmp/server_location.txt 

    การอัปเดตข้อมูลตำแหน่งทางภูมิศาสตร์วันละครั้งด้วยงาน Cron

    มาสร้างงาน cron เพื่อให้เซิร์ฟเวอร์ของเราอัปเดตตำแหน่งทางภูมิศาสตร์และบันทึกลงในไฟล์วันละครั้ง งาน cron รายวันอัพเดตไฟล์ชื่อ server_location.txt ใน / tmp / โฟลเดอร์ของเซิร์ฟเวอร์ การสร้างงาน cron ตลอด 24 ชั่วโมงนั้นง่ายเหมือนการวางสคริปต์ของเราไว้ใน /etc/cron.daily ไดเรกทอรี เราต้องใช้คำสั่ง sudo เพื่อคัดลอกไฟล์ในฐานะผู้ใช้รูทเพื่อหลีกเลี่ยงปัญหาการอนุญาต รันคำสั่งต่อไปนี้เพื่อคัดลอก geolocate.sh ไปที่ /etc/cron.daily ไดเรกทอรี.

    sudo cp geolocate.sh /etc/cron.daily

    การเปลี่ยนแปลงเหล่านี้เกิดขึ้นทันทีและสคริปต์ของเราจะทำงานทุก ๆ 24 ชั่วโมงเพื่ออัปเดตเนื้อหาของ /tmp/server_location.txt ไฟล์. เราสามารถใช้ข้อมูลนี้เพื่อทำสิ่งที่น่าสนใจเช่นการพล็อตเซิร์ฟเวอร์ของเราบนแผนที่รวมถึงการระบุตำแหน่งทางภูมิศาสตร์กับบันทึกการจราจรเพื่อดูว่าฮอตสปอตของเซิร์ฟเวอร์ของเราอยู่ที่ไหนในโลก.