홈페이지 » 어떻게 » Bash 스크립트에서 시스템의 지리적 위치를 얻는 방법

    Bash 스크립트에서 시스템의 지리적 위치를 얻는 방법

    토리아 / Shutterstock.com

    공개 API와 간단한 bash 스크립트를 사용하여 원격 Linux 시스템의 지리적 위치를 찾을 수 있습니다. 서버를 위치 파악하면 실제 세계에서 서버를 추적하여 서버를 지역별 핫스팟에 배치 할 수 있습니다..

    인터넷상의 각 서버에는 공용 IP 주소가 있습니다. 이것은 서버에 직접 할당되거나 해당 서버로 트래픽을 보내는 라우터에 할당됩니다. IP 주소는 우리에게 서버가 세계 어디에 위치해 있는지 알려줍니다. ipinfo.co 및 IP Vigilante에서 제공하는 두 개의 공개 API를 통해이 Geolocation 데이터를 가져 와서 서버 나 다른 원격 시스템과 연결된 도시, 주 및 국가를 볼 수 있습니다. 이것은 정확한 GPS 위치를 알려주지 않습니다. IP 주소의 일반 영역을 볼 수 있습니다..

    원격 시스템에 연결

    위치 정보를 지정할 Linux 서버 또는 다른 원격 시스템에서 다음 명령을 실행할 것이므로 먼저 서버에 연결하여 먼저 쉘에 액세스해야합니다. 예를 들어 SSH를 통해 연결할 수 있습니다. 로컬 시스템에서 명령을 실행하여 위치를 찾을 수는 있지만 이미 위치를 알고있을 것입니다!

    curl 및 jq 설치

    Geolocation API에 액세스하려면 두 가지 도구가 필요합니다. HTTP 요청을 만들고  일곱 번째 우리가 되돌려주는 JSON 데이터를 처리 할 수 ​​있습니다. 터미널을 열고 사용하십시오.  apt-get 우분투 또는 데비안 기반 시스템에이 도구를 설치하십시오. 다른 Linux 배포판에서는 대신 Linux 배포 패키지 설치 도구를 사용하십시오..

    sudo apt-get curl jq 설치하기

    서버의 공용 IP 주소 찾기

    또한 Geolocation 데이터를 가져 오기 전에 서버의 공용 IP 주소가 필요합니다. 용도 터미널 창에서 ipinfo.io에 API 호출하기.

    컬 https://ipinfo.io/ip

    API에서 위치 데이터 가져 오기

    이제 서버의 공용 IP가 생겨서 ipvigilante.com의 API를 호출하여 Geolocation 데이터를 가져올 수 있습니다. 바꾸다 이전 명령에서 돌아온 주소.

    컬 https://ipvigilante.com/

    이 호출에서 얻은 데이터를 자세히 살펴 보겠습니다.

    API는 Google 서버가있는 도시, 국가 및 대륙을 반환합니다. 이 서버를 대화식지도에 그리려면 대략적인 위도와 경도 좌표를 반환합니다. 스크립트에서 "위도", "경도", "도시 이름"및 "국가 이름"을 사용합니다. 그만큼  일곱 번째 명령은 API 데이터를 처리하고이 네 개의 필드를 추출하는 방법을 이해합니다..

    API 호출을 자동화하는 스크립트 만들기

    Geolocation 데이터를 가져와 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"# geolocation API를 호출하고 출력 curl -s https를 캡처합니다. : //ipvigilante.com/$ PUBLIC_IP | \ jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name'| \ 읽는 동안 -r LATITUDE; do -r LONGITUDE 읽기 -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 작업으로 하루에 한 번 Geolocation 데이터 업데이트

    서버가 geolocation을 업데이트하고 하루에 한 번 파일에 저장하도록 cron 작업을 만들어 보겠습니다. 매일 cron 작업이라는 파일을 업데이트합니다. server_location.txt ~ 안에 / tmp / 폴더에 저장하십시오. 24 시간 크론 작업을 만드는 것은 스크립트를 /etc/cron.daily 예배 규칙서. 권한 문제를 피하기 위해 sudo 명령을 사용하여 루트 사용자로 파일을 복사해야합니다. 복사하려면 다음 명령을 실행하십시오. geolocate.sh ~로 /etc/cron.daily 예배 규칙서.

    sudo cp geolocate.sh /etc/cron.daily

    이러한 변경 사항은 즉각적이며 스크립트는 24 시간마다 실행되어 /tmp/server_location.txt 파일. 이 데이터를 사용하여 서버를지도에 플로팅하고 위치 정보를 트래픽 로그와 결합하여 서버 핫스팟이 어디에 있는지 확인할 수 있습니다..