Bash'in Komut Dosyasından Sisteminizin Coğrafi Konumunu Nasıl Gidilir?

Toria/Shutterstock.com

Açık API'ler ve basit bir bash betiği kullanarak uzak bir Linux sisteminin coğrafi konumunu bulabilirsiniz. Bir sunucuyu coğrafi olarak konumlandırmak, onu fiziksel dünyada izlemenize yardımcı olabilir ve bu da sunucuların bölgesel noktalara yerleştirilmesini sağlar.

İnternetteki her sunucunun halka açık bir IP adresi vardır. Bu, doğrudan sunucuya atanır veya bu sunucuya trafik gönderen bir yönlendiriciye atanır. IP adresleri bize o sunucunun dünyanın neresinde bulunduğuna dair bir ipucu veriyor. Bu konum belirleme verilerini ipinfo.co ve IP Vigilante tarafından sağlanan iki açık API üzerinden alabilir ve bir sunucu veya başka bir uzak sistemle ilişkili şehri, eyaleti ve ülkeyi görmek için kullanabiliriz. Bu size kesin bir GPS konumu sağlamaz; IP adresinin genel alanını görmenizi sağlar.

Uzak bir sisteme bağlanın

Aşağıdaki komutları Linux sunucusunda veya coğrafi konumlandırmak istediğiniz diğer uzak sistemlerde çalıştırıyor olacaksınız, bu nedenle önce sunucuya bağlanmalı ve bir kabuğa erişmelisiniz. Örneğin, SSH ile bağlanabilirsiniz. Konumunu bulmak için yerel sisteminizde komutları çalıştırabilirsiniz, ancak muhtemelen nerede olduğunuzu zaten biliyorsunuz!

Kıvrılma ve jq yükleyin

Coğrafi konum API'sine erişmek için iki araca ihtiyacımız var: HTTP istekleri yapmak için curl ve geri aldığımız JSON verilerini işlemek için jq . Bir terminal açın ve bu araçları Ubuntu veya Debian tabanlı sistemlere kurmak için apt-get kullanın. Diğer Linux dağıtımlarında bunun yerine Linux dağıtımınızın paket kurulum aracını kullanın.

sudo apt-get install curl jq

Sunucunun Genel IP Adresini Bulun

Coğrafi konum verilerini almadan önce sunucunun genel IP adresine de ihtiyacımız var. Terminal pencerenizde ipinfo.io'ya API araması yapmak için curl kullanın.

curl https://ipinfo.io/ip

API’dan Konum Verileri Alın

Artık sunucunun genel IP'sine sahip olduğumuzdan, coğrafi konum verilerini almak için ipvigilante.com'un API'sini arayabiliriz. <your ip address> önceki komutta gelen <your ip address> değiştirin.

curl https://ipvigilante.com/<your ip address>

Bu çağrıdan hangi verilere geri döndüğümüzü daha yakından inceleyelim:

API, sunucumuzun bulunduğu şehri, ülkeyi ve kıtayı döndürür. Bu sunucuyu etkileşimli bir harita üzerinde çizmek istemeniz durumunda, yaklaşık enlem ve boylam koordinatlarını da döndürür. Senaryomuzda “enlem”, “boylam”, “şehir_adı” ve “ülke_adı” nı kullanacağız. jq komutu, API verilerinin nasıl jq ve bu dört alanı nasıl çıkardığını anlar.

API Çağrısını Otomatikleştirmek için Bir Komut Dosyası Oluşturma

Coğrafi konum verilerini alan ve CSV biçiminde bir dosyaya yazan bir komut dosyası oluşturabiliriz. Veriler /tmp/ dizininde server_location.txt adlı bir dosyaya server_location.txt . Favori düzenleyicinizi açın ve geolocate.sh isimli bir script oluşturun. Aşağıda gösterilen komut dosyası içeriğini ekleyin ve IP adresini kendinizinkiyle değiştirdiğinizden emin olun:

#!/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/169.255.X.X |
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

Komut dosyasını kaydedin ve terminale geri dönün. Komut dosyasını bu dosya üzerinde yürütme izni vererek terminalden yürütülebilir duruma getirin.

chmod u+x geolocate.sh

Şimdi test etmeye hazırsın. geolocate.sh betiğini çalıştırın ve çıktı dosyasının içeriğini kontrol edin:

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

Coğrafi Konum Verilerini Günde Bir Cron İşiyle Güncelleme

Sunucumuzun coğrafi konumunu güncellemesi ve günde bir kez kaydetmesi için bir cron işi yaratalım. Günlük cron işi, sunucunun /tmp/ klasöründeki server_location.txt adlı bir dosyayı günceller. 24 saatlik bir cron işi oluşturmak, /etc/cron.daily dizinine koymak kadar kolaydır. İzin sorunlarını önlemek için dosyayı kök kullanıcı olarak kopyalamak için sudo komutunu kullanmalıyız. Kopyalamak için aşağıdaki komutu çalıştırın geolocate.sh için /etc/cron.daily dizinde.

sudo cp geolocate.sh /etc/cron.daily

Bu değişiklikler hemen yapılır ve /tmp/server_location.txt dosyasının içeriğini güncellemek için her 24 saatte bir çalışır. Bu verileri, sunucularımızı bir harita üzerine yerleştirmek ve coğrafi konumumuzu trafik kayıt defterleriyle birleştirmek, dünyadaki sunucumuzun sıcak noktalarının nerede olduğunu görmek gibi ilginç şeyler yapmak için kullanabiliriz.