Cách nhận vị trí địa lý của hệ thống của bạn từ tập lệnh Bash
Bạn có thể tìm vị trí địa lý của một hệ thống Linux từ xa bằng cách sử dụng API mở và 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 trong các điểm nóng 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 gán trực tiếp cho máy chủ hoặc được gán cho bộ định tuyến gửi lưu lượng đến máy chủ đó. Địa chỉ IP cho chúng ta manh mối về vị trí của máy chủ đó trên thế giới. Chúng tôi có thể nhận dữ liệu định vị đị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 dữ liệu này để 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ý, do đó bạn phải kết nối với máy chủ và truy cập hệ vỏ trên nó trước. 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ó lẽ bạn đã biết bạn đang ở đâu!
Cài đặt curl và jq
Chúng tôi cần hai công cụ để truy cập API định vị địa lý: cuộn tròn
để 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 các hệ thống dựa trên Ubuntu hoặc Debian. Trên các bản phân phối Linux khác, thay vào đó, hãy sử dụng công cụ cài đặt gói phân phối Linux của bạn.
sudo apt-get cài đặt 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 chúng tôi có thể nhận được dữ liệu định vị địa lý. Sử dụng cuộn tròn
để thực hiện cuộc gọi API đến ipinfo.io trong cửa sổ đầu cuối của bạn.
cuộn tròn https://ipinfo.io/ip
Nhận dữ liệu vị trí từ API
Bây giờ chúng tôi có IP công cộng của máy chủ, chúng tôi có thể thực hiện cuộc gọi đến API của ipvigilante.com để lấy dữ liệu định vị địa lý. Thay thế với địa chỉ đã trở lại trong lệnh trước.
cuộn tròn https://ipvigilante.com/
Chúng ta hãy xem xét kỹ hơn những dữ liệu chúng ta nhận được từ cuộc gọi này:
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ề các tọa độ kinh độ và vĩ độ gần đúng, trong trường hợp chúng ta muốn vẽ máy chủ này trên bản đồ tương tác. Chúng tôi sẽ sử dụng vĩ độ của Hồi, kinh độ, thời gian, thành phố, tên và thành phố, trong thời gian đó. Các jq
lệnh 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 lệnh gọi API
Chúng tôi có thể tạo một tập lệnh lấy dữ liệu định vị đị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 server_location.txt
bên trong / tmp /
danh mục. Mở trình soạn thảo yêu thích của bạn và tạo một tập lệnh có tên định vị địa lý
. 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ỉ của riêng bạn:
#! / bin / sh OUTPUT_FILE = / tmp / server_location.txt # Lấy địa chỉ IP công khai của máy chủ này PUBLIC_IP = "curl -s https://ipinfo.io/ip" # Gọi API định vị địa lý và nắm bắt đầu ra curl -s https : //ipvigilante.com/$ PUBLIC_IP | \ jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | \ trong khi đọc -r LATITUDE; đọc -r LONGITUDE đọc -r THÀNH PHỐ đọc -r QUỐC GIA tiếng vang "$ LATITUDE, $ LONGITUDE, $ CITY, $ COUNTRY" | \ tr --delete \ "> \ $ OUTPUT_FILE đã hoàn tất
Lưu tập lệnh và quay trở lại thiết bị đầu cuối. Làm cho tập lệnh có thể thực thi được từ thiết bị đầu cuối, bằng cách cấp quyền thực thi cho tệp này.
chmod u + x geolocate.sh
Bây giờ bạn đã sẵn sàng để thử nghiệm nó. Chạy định vị địa lý
tập lệnh và kiểm tra nội dung của tập tin đầu ra:
./geolocate.sh mèo /tmp/server_location.txt
Cập nhật dữ liệu định vị địa lý mỗi ngày một lần với công việc định kỳ
Hãy tạo một công việc định kỳ để 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 định kỳ hàng ngày cập nhật một tệp gọi là server_location.txt
bên trong / tmp /
thư mục của máy chủ. Tạo một công việc định kỳ 24 giờ dễ dàng như đưa tập lệnh của chúng tôi vào /etc/cron.d Daily
danh mục. Chúng ta phải sử dụng lệnh sudo để sao chép tệp dưới dạng người dùng root, để tránh các vấn đề về quyền. Chạy lệnh sau để sao chép định vị địa lý
để /etc/cron.d Daily
danh mục.
sudo cp geolocate.sh /etc/cron.d Daily
Những thay đổi này là ngay lập tức và tập lệnh của chúng tôi sẽ chạy mỗi 24 giờ để cập nhật nội dung của /tmp/server_location.txt
tập tin. 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ẽ sơ đồ máy chủ của chúng tôi trên bản đồ cũng như kết hợp định vị địa lý với nhật ký giao thông để xem các điểm nóng máy chủ của chúng tôi ở đâu trên thế giới.