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 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.
Hubungkan ke Sistem Jarak Jauh
Anda akan menjalankan perintah berikut di server Linux atau sistem jarak jauh lain yang ingin Anda lokasikan secara geografis, jadi Anda harus terhubung ke server dan mengakses shell di dalamnya terlebih dahulu. Misalnya, Anda mungkin terhubung melalui SSH. Anda dapat menjalankan perintah di 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: curl 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 Ubuntu atau sistem berbasis Debian. Pada distribusi Linux lainnya, gunakan alat penginstalan paket distribusi Linux Anda.
sudo apt-get install curl jq
Temukan Alamat IP Publik Server
Kami juga membutuhkan alamat IP publik server sebelum kami bisa mendapatkan data geolokasi. Gunakan curl untuk membuat panggilan API ke ipinfo.io di jendela terminal Anda.
curl https://ipinfo.io/ip
Dapatkan Data Lokasi Dari API
Sekarang setelah kita memiliki IP publik dari server, kita dapat melakukan panggilan ke API ipvigilante.com untuk mendapatkan data geolokasi. Mengganti
curl https://ipvigilante.com/
Mari kita lihat lebih dekat data apa yang kami dapatkan dari panggilan ini:
API mengembalikan kota, negara, dan benua, tempat server kami berada. Ini juga mengembalikan perkiraan koordinat garis lintang dan garis bujur, jika kita ingin menggambar server ini pada peta interaktif. Kami akan menggunakan “lintang”, “bujur”, “nama_kota”, dan “nama_negara” dalam skrip kami. Perintah jq memahami cara memproses data API dan mengekstrak keempat bidang ini.
Membuat Skrip 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 di direktori /tmp/. 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 # 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
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 untuk mengujinya. Jalankan skrip geolocate.sh dan periksa isi file output:
./geolocate.sh cat /tmp/server_location.txt
Memperbarui Data Geolokasi Sekali Sehari Dengan Cron Job
Mari kita buat tugas cron untuk membuat server kita memperbarui geolokasi dan menyimpannya ke file sekali sehari. Pekerjaan cron harian memperbarui file bernama server_location.txt di folder /tmp/ server. Membuat tugas cron 24 jam semudah memasukkan skrip kita ke direktori /etc/cron.daily. Kita harus menggunakan perintah sudo untuk menyalin file sebagai pengguna root, untuk menghindari masalah izin. Jalankan perintah berikut untuk menyalin geolocate.sh ke direktori /etc/cron.daily.
sudo cp geolocate.sh /etc/cron.daily
Perubahan ini segera terjadi, dan skrip kami akan berjalan setiap 24 jam untuk memperbarui konten file /tmp/server_location.txt. Kami dapat menggunakan data ini untuk melakukan hal-hal menarik, seperti merencanakan server kami di peta serta menggabungkan geolokasi dengan log lalu lintas untuk melihat di mana hotspot server kami berada.