Trang chủ » làm thế nào để » Cách nhận vị trí địa lý của hệ thống của bạn từ tập lệnh Bash

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

    Toria / Shutterstock.com

    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.