mirror of
https://github.com/permissionlesstech/georelays.git
synced 2026-07-25 02:45:18 +00:00
add scripts
This commit is contained in:
Executable
+53
@@ -0,0 +1,53 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Check if the output file is provided
|
||||
if [ "$#" -ne 1 ]; then
|
||||
echo "Usage: $0 output.csv"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
output_file="$1"
|
||||
if [ ! -f "$output_file" ] || [ ! -s "$output_file" ]; then
|
||||
echo "Relay URL,Latitude,Longitude" > "$output_file"
|
||||
fi
|
||||
|
||||
while IFS= read -r url; do
|
||||
|
||||
a_records=$(dig +short "$url" A)
|
||||
|
||||
if [[ -n "$a_records" ]]; then
|
||||
|
||||
for ip in $a_records; do
|
||||
echo "Attempting geo-location lookup for $url -> $ip"
|
||||
|
||||
|
||||
location_data=""
|
||||
retries=3
|
||||
attempt=0
|
||||
|
||||
while [[ -z "$location_data" && $attempt -lt $retries ]]; do
|
||||
location_data=$(curl -s "https://ipinfo.io/$ip/json")
|
||||
#echo "location data: $(echo $location_data | jq)"
|
||||
attempt=$((attempt + 1))
|
||||
sleep 1
|
||||
done
|
||||
|
||||
latitude=$(echo "$location_data" | jq -r '.loc' | cut -d',' -f1)
|
||||
longitude=$(echo "$location_data" | jq -r '.loc' | cut -d',' -f2)
|
||||
|
||||
if [[ -n "$latitude" && -n "$longitude" && $latitude != "null" && $longitude != "null" ]]; then
|
||||
echo "$url: latitude=$latitude, longitude=$longitude"
|
||||
echo "$url,$latitude,$longitude" >> "$output_file"
|
||||
break
|
||||
else
|
||||
echo "geolocation failed for $url"
|
||||
continue
|
||||
fi
|
||||
done
|
||||
else
|
||||
echo "geolocation failed for $url"
|
||||
fi
|
||||
done
|
||||
|
||||
echo "Results written to $output_file"
|
||||
|
||||
Reference in New Issue
Block a user