วิธีรับตำแหน่งทางภูมิศาสตร์ของระบบจาก Bash Script
คุณสามารถค้นหาตำแหน่งทางภูมิศาสตร์ของระบบ 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
ไฟล์. เราสามารถใช้ข้อมูลนี้เพื่อทำสิ่งที่น่าสนใจเช่นการพล็อตเซิร์ฟเวอร์ของเราบนแผนที่รวมถึงการระบุตำแหน่งทางภูมิศาสตร์กับบันทึกการจราจรเพื่อดูว่าฮอตสปอตของเซิร์ฟเวอร์ของเราอยู่ที่ไหนในโลก.