Cara Dapatkan Lokasi Geografi Sistem Anda Dari Bash Script
Anda boleh mencari lokasi geografi sistem Linux jauh menggunakan API terbuka dan skrip bash mudah. Geolocating pelayan boleh membantu anda mengesannya di dunia fizikal, memastikan pelayan terletak di hotspot serantau.
Setiap pelayan di internet mempunyai alamat IP yang menghadap awam. Ini sama ada secara langsung diberikan kepada pelayan, atau diberikan kepada penghala yang menghantar trafik ke pelayan itu. Alamat IP memberi kami petunjuk tentang mana pelayan itu terletak di dunia. Kita boleh mendapatkan data geolokasi ini melalui dua API terbuka, yang disediakan oleh ipinfo.co dan IP Vigilante dan menggunakannya untuk melihat bandar, negeri, dan negara yang berkaitan dengan pelayan atau sistem jauh lain. Ini tidak memberi anda lokasi GPS tepat; ia hanya membolehkan anda melihat kawasan umum alamat IP.
Sambungkan ke Sistem Jauh
Anda akan menjalankan arahan berikut pada pelayan Linux atau sistem jarak jauh lain yang ingin anda geolocate, jadi anda mesti menyambung ke pelayan dan mengakses shell di atasnya terlebih dahulu. Sebagai contoh, anda boleh menyambung melalui SSH. Anda boleh menjalankan arahan pada sistem setempat anda untuk mencari lokasinya, tetapi anda mungkin sudah tahu di mana anda berada!
Pasang curl dan jq
Kami memerlukan dua alat untuk mengakses API geolokasi: curl
untuk membuat permintaan HTTP dan jq
untuk memproses data JSON yang kami dapat kembali. Buka terminal dan gunakan apt-get
untuk memasang alat-alat ini di dalam sistem berasaskan Ubuntu atau Debian. Pada pengedaran Linux yang lain, gunakan alat pemasangan paket pengedaran Linux anda sebaliknya.
sudo apt-get install curl jq
Cari Alamat IP Awam Pelayan
Kami juga memerlukan alamat IP awam pelayan sebelum kita boleh mendapatkan data geolokasi. Guna curl
untuk membuat panggilan API ke ipinfo.io di tetingkap terminal anda.
curl https://ipinfo.io/ip
Dapatkan Data Lokasi Daripada API
Sekarang bahawa kami mempunyai IP awam pelayan, kami boleh membuat panggilan ke API ipvigilante.com untuk mendapatkan data geolokasi. Gantikan dengan alamat yang kembali dalam perintah terdahulu.
curl https://ipvigilante.com/
Mari kita lihat dengan lebih dekat data yang kita dapat balik dari panggilan ini:
API mengembalikan bandar, negara, dan benua, di mana pelayan kami berada. Ia juga mengembalikan koordinat latitud dan longitud, jika kita mahu menarik pelayan ini pada peta interaktif. Kami akan menggunakan "latitud," "longitud," "bandar_name," dan "country_name" dalam skrip kami. The jq
arahan memahami cara memproses data API dan mengekstrak keempat bidang ini.
Membuat Skrip untuk Mengotomatikkan Panggilan API
Kita boleh membuat skrip yang merangkumi data geolokasi dan menulisnya ke fail dalam format CSV. Data akan ditulis ke fail yang dipanggil server_location.txt
di dalam / tmp /
direktori. Buka editor kegemaran anda dan buat skrip bernama geolocate.sh
. Masukkan kandungan skrip yang ditunjukkan di bawah, dan pastikan untuk menggantikan alamat IP dengan anda sendiri:
#! / bin / sh OUTPUT_FILE = / tmp / server_location.txt # Ambil alamat IP awam pelayan ini PUBLIC_IP = "curl -s https://ipinfo.io/ip" # Panggil API geolokasi dan menangkap output curl -s https : //ipvigilante.com/$ PUBLIC_IP | \ jq '.data.latitude, .data.longitude, .data.city_name, .data.country_name' | \ semasa membaca -r LATITUDE; lakukan bacaan -r LONGITUDE baca -r CITY read -r COUNTRY echo "$ LATITUDE, $ LONGITUDE, $ CITY, $ COUNTRY" | \ tr --delete \ "> \ $ OUTPUT_FILE selesai
Simpan skrip dan kembali ke terminal. Buat skrip yang boleh dieksekusi dari terminal, dengan memberikan izin melaksanakan pada fail ini.
chmod u + x geolocate.sh
Sekarang anda sudah bersedia untuk mengujinya. Jalankan geolocate.sh
skrip dan semak kandungan fail output:
./geolocate.sh cat /tmp/server_location.txt
Mengemas kini Data Geolokasi Seminggu Sehari Dengan Kerja Cron
Mari buat kerja cron untuk membuat pelayan kami mengemas kini geolokasi dan menyimpannya ke fail sekali sehari. Kerja cron harian mengemas kini fail yang dipanggil server_location.txt
di dalam / tmp /
folder pelayan. Mencipta tugas cron 24 jam semudah meletakkan skrip kami ke dalam /etc/cron.daily
direktori. Kita mesti menggunakan perintah sudo untuk menyalin fail tersebut sebagai pengguna root, untuk mengelakkan masalah kebenaran. Jalankan arahan berikut untuk menyalin geolocate.sh
kepada /etc/cron.daily
direktori.
sudo cp geolocate.sh /etc/cron.daily
Perubahan ini adalah serta-merta, dan skrip kami akan berjalan setiap 24 jam untuk mengemas kini kandungan /tmp/server_location.txt
fail. Kami boleh menggunakan data ini untuk melakukan perkara yang menarik, seperti merancang pelayan kami pada peta serta menggabungkan geolokasi dengan log trafik untuk melihat di mana di dunia kami hotspot server adalah.