Beranda » bagaimana » Cara Mendapatkan Lokasi Geografis Sistem Anda Dari Skrip Bash

    Cara Mendapatkan Lokasi Geografis Sistem Anda Dari Skrip Bash

    Toria / Shutterstock.com

    Anda dapat menemukan lokasi geografis sistem Linux jarak jauh menggunakan API terbuka dan skrip bash sederhana. Geolokasi server dapat membantu Anda melacaknya di dunia fisik, memastikan server berada di hotspot regional.

    Setiap server di internet memiliki alamat IP yang menghadap publik. Ini baik secara langsung ditugaskan ke server, atau ditugaskan ke router yang mengirimkan lalu lintas ke server itu. Alamat IP memberi kita petunjuk tentang di mana server itu berada di dunia. Kita bisa mendapatkan data geolokasi ini melalui dua API terbuka, yang disediakan oleh ipinfo.co dan IP Vigilante dan menggunakannya untuk melihat kota, negara bagian, dan negara yang terkait dengan server atau sistem jarak jauh lainnya. Ini tidak memberi Anda lokasi GPS yang tepat; itu hanya memungkinkan Anda melihat area umum dari alamat IP.

    Terhubung ke Sistem Jarak Jauh

    Anda akan menjalankan perintah berikut di server Linux atau sistem jarak jauh lain yang ingin Anda geolokasi, jadi Anda harus terhubung ke server dan mengakses shell terlebih dahulu. Misalnya, Anda dapat terhubung melalui SSH. Anda dapat menjalankan perintah pada sistem lokal Anda untuk menemukan lokasinya, tetapi Anda mungkin sudah tahu di mana Anda berada!

    Instal curl dan jq

    Kami membutuhkan dua alat untuk mengakses API geolokasi: ikal untuk membuat permintaan HTTP dan  jq untuk memproses data JSON yang kami dapatkan kembali. Buka terminal dan gunakan  apt-get untuk menginstal alat ini di sistem berbasis Ubuntu atau Debian. Pada distribusi Linux lainnya, gunakan alat instalasi paket distribusi Linux Anda sebagai gantinya.

    sudo apt-get install curl jq

    Temukan Alamat IP Publik Server

    Kami juga memerlukan alamat IP publik server sebelum kami bisa mendapatkan data geolokasi. Menggunakan ikal untuk membuat panggilan API ke ipinfo.io di jendela terminal Anda.

    curl https://ipinfo.io/ip

    Dapatkan Data Lokasi Dari API

    Sekarang kami memiliki IP publik dari server, kami dapat melakukan panggilan ke API ipvigilante.com untuk mendapatkan data geolokasi. Menggantikan dengan alamat yang kembali pada perintah sebelumnya.

    curl https://ipvigilante.com/

    Mari kita lihat lebih dekat data apa yang kita dapatkan dari panggilan ini:

    API mengembalikan kota, negara, dan benua, tempat server kami berada. Ini juga mengembalikan perkiraan koordinat lintang dan bujur, jika kita ingin menggambar server ini pada peta interaktif. Kami akan menggunakan "lintang," "bujur," "city_name," dan "country_name" dalam skrip kami. Itu  jq perintah mengerti bagaimana memproses data API dan mengekstrak keempat bidang ini.

    Membuat Script untuk Mengotomatiskan Panggilan API

    Kita dapat membuat skrip yang mengambil data geolokasi dan menulisnya ke file dalam format CSV. Data akan ditulis ke file bernama server_location.txt dalam / tmp / direktori. Buka editor favorit Anda dan buat skrip bernama geolocate.sh . Masukkan konten skrip yang ditunjukkan di bawah ini, dan pastikan untuk mengganti alamat IP dengan milik Anda:

    #! / bin / sh OUTPUT_FILE = / tmp / server_location.txt # Raih alamat IP publik server ini PUBLIC_IP = "curl -s https://ipinfo.io/ip" # Panggil API geolokasi dan tangkap curl -s https : //ipvigilante.com/$ PUBLIC_IP | \ jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | \ saat membaca -r LATITUDE; jangan baca -r LONGITUDE baca -r KOTA baca -r NEGARA gema "$ LATITUDE, $ LONGITUDE, $ CITY, $ COUNTRY" | \ tr --delete \ "> \ $ OUTPUT_FILE selesai 

    Simpan skrip dan kembali ke terminal. Jadikan skrip dapat dieksekusi dari terminal, dengan memberikan izin eksekusi pada file ini.

    chmod u + x geolocate.sh

    Sekarang Anda siap mengujinya. Jalankan geolocate.sh skrip dan periksa isi file output:

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

    Memperbarui Data Geolokasi Sekali Sehari Dengan Pekerjaan Cron

    Mari kita buat pekerjaan cron untuk membuat server kami memperbarui geolokasi dan menyimpannya ke file sekali sehari. Pekerjaan cron harian memperbarui file bernama server_location.txt dalam / tmp / folder server. Membuat pekerjaan cron 24 jam semudah menempatkan skrip kami ke dalam /etc/cron.daily direktori. Kita harus menggunakan perintah sudo untuk menyalin file sebagai pengguna root, untuk menghindari masalah izin. Jalankan perintah berikut untuk menyalin geolocate.sh ke /etc/cron.daily direktori.

    sudo cp geolocate.sh /etc/cron.daily

    Perubahan ini segera, dan skrip kami akan berjalan setiap 24 jam untuk memperbarui konten /tmp/server_location.txt mengajukan. Kita dapat menggunakan data ini untuk melakukan hal-hal menarik, seperti memplot server kita di peta serta menggabungkan geolokasi dengan traffic log untuk melihat di mana di dunia hotspot server kita berada.