Cách lấy vị trí địa lý của hệ thống của bạn từ tập lệnh Bash

Spread the love

Bạn có thể tìm thấy vị trí địa lý của hệ thống Linux từ xa bằng cách sử dụng các API mở và một tập lệnh bash đơn giản. Định vị địa lý một máy chủ có thể giúp bạn theo dõi nó trong thế giới thực, đảm bảo các máy chủ được đặt tại các điểm phát sóng trong khu vực.

Mỗi máy chủ trên internet có một địa chỉ IP công khai. Điều này hoặc được chỉ định trực tiếp cho máy chủ hoặc được chỉ định cho một bộ định tuyến gửi lưu lượng truy cập đến máy chủ đó. Địa chỉ IP cung cấp cho chúng tôi manh mối về nơi đặt máy chủ đó trên thế giới. Chúng tôi có thể lấy dữ liệu vị trí địa lý này thông qua hai API mở, được cung cấp bởi ipinfo.co và IP Vigilante và sử dụng nó để xem thành phố, tiểu bang và quốc gia được liên kết với máy chủ hoặc hệ thống từ xa khác. Điều này không cung cấp cho bạn một vị trí GPS chính xác; nó chỉ cho phép bạn xem khu vực chung của địa chỉ IP.

Kết nối với hệ thống từ xa

Bạn sẽ chạy các lệnh sau trên máy chủ Linux hoặc các hệ thống từ xa khác mà bạn muốn định vị địa lý, vì vậy trước tiên bạn phải kết nối với máy chủ và truy cập trình bao trên đó. Ví dụ: bạn có thể kết nối qua SSH. Bạn có thể chạy các lệnh trên hệ thống cục bộ của mình để tìm vị trí của nó, nhưng có thể bạn đã biết mình đang ở đâu!

  Làm thế nào để mang Smarthome của bạn ra bên ngoài

Cài đặt curl và jq

Chúng tôi cần hai công cụ để truy cập API định vị địa lý: curl để thực hiện các yêu cầu HTTP và jq để xử lý dữ liệu JSON mà chúng tôi lấy lại. Mở một thiết bị đầu cuối và sử dụng apt-get để cài đặt các công cụ này trên hệ thống dựa trên Ubuntu hoặc Debian. Trên các bản phân phối Linux khác, hãy sử dụng công cụ cài đặt gói của bản phân phối Linux của bạn để thay thế.

sudo apt-get install curl jq

Tìm địa chỉ IP công cộng của máy chủ

Chúng tôi cũng cần địa chỉ IP công cộng của máy chủ trước khi có thể lấy dữ liệu vị trí địa lý. Sử dụng curl để thực hiện lệnh gọi API tới ipinfo.io trong cửa sổ đầu cuối của bạn.

curl https://ipinfo.io/ip

Nhận dữ liệu vị trí từ API

Bây giờ chúng ta đã có IP công khai của máy chủ, chúng ta có thể thực hiện cuộc gọi tới API của ipvigilante.com để lấy dữ liệu vị trí địa lý. Thay thế với địa chỉ quay lại trong lệnh trước đó.

curl https://ipvigilante.com/

Hãy xem xét kỹ hơn những dữ liệu mà chúng tôi nhận được từ cuộc gọi này:

  Nhận hướng dẫn trên màn hình có hướng dẫn để tạo ảnh đẹp hơn

API trả về thành phố, quốc gia và lục địa, nơi máy chủ của chúng tôi cư trú. Nó cũng trả về vĩ độ và kinh độ gần đúng, trong trường hợp chúng tôi muốn vẽ máy chủ này trên một bản đồ tương tác. Chúng tôi sẽ sử dụng “vĩ độ”, “kinh độ”, “city_name” và “country_name” trong tập lệnh của mình. Lệnh jq hiểu cách xử lý dữ liệu API và trích xuất bốn trường này.

Tạo tập lệnh để tự động hóa cuộc gọi API

Chúng tôi có thể tạo một tập lệnh lấy dữ liệu vị trí địa lý và ghi nó vào một tệp ở định dạng CSV. Dữ liệu sẽ được ghi vào một tệp có tên là server_location.txt trong thư mục / tmp /. Mở trình chỉnh sửa yêu thích của bạn và tạo một tập lệnh có tên geolocate.sh. Chèn nội dung tập lệnh được hiển thị bên dưới và đảm bảo thay thế địa chỉ IP bằng địa chỉ IP của riêng bạn:

#!/bin/sh

OUTPUT_FILE=/tmp/server_location.txt

# Grab this server's public IP address
PUBLIC_IP=`curl -s https://ipinfo.io/ip`

# Call the geolocation API and capture the output
curl -s https://ipvigilante.com/${PUBLIC_IP} | 
        jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | 
        while read -r LATITUDE; do
                read -r LONGITUDE
                read -r CITY
                read -r COUNTRY
                echo "${LATITUDE},${LONGITUDE},${CITY},${COUNTRY}" | 
                        tr --delete " > 
                        ${OUTPUT_FILE}
        done

Lưu tập lệnh và quay lại thiết bị đầu cuối. Làm cho tập lệnh có thể thực thi từ thiết bị đầu cuối, bằng cách cấp quyền thực thi trên tệp này.

chmod u+x geolocate.sh

Bây giờ bạn đã sẵn sàng để kiểm tra nó. Chạy tập lệnh geolocate.sh và kiểm tra nội dung của tệp đầu ra:

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

Cập nhật dữ liệu vị trí địa lý mỗi ngày một lần với công việc Cron

Hãy tạo cron job để làm cho máy chủ của chúng tôi cập nhật vị trí địa lý của nó và lưu nó vào một tệp mỗi ngày một lần. Công việc cron hàng ngày cập nhật một tệp có tên là server_location.txt trong thư mục / tmp / của máy chủ. Tạo công việc cron 24 giờ dễ dàng như đặt tập lệnh của chúng tôi vào thư mục /etc/cron.daily. Chúng ta phải sử dụng lệnh sudo để sao chép tệp với tư cách là người dùng root, để tránh các vấn đề về quyền. Chạy lệnh sau để sao chép geolocate.sh vào thư mục /etc/cron.daily.

sudo cp geolocate.sh /etc/cron.daily

Những thay đổi này diễn ra ngay lập tức và tập lệnh của chúng tôi sẽ chạy 24 giờ một lần để cập nhật nội dung của tệp /tmp/server_location.txt. Chúng tôi có thể sử dụng dữ liệu này để thực hiện những điều thú vị, chẳng hạn như vẽ các máy chủ của chúng tôi trên bản đồ cũng như kết hợp vị trí địa lý với nhật ký lưu lượng truy cập để xem các điểm phát sóng máy chủ của chúng tôi ở đâu trên thế giới.

  Cách báo lại email trong Gmail

x