Advertisement
marioq

parsexmlgeoip

May 22nd, 2019
464
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 3.37 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. #SERVICE=https://freegeoip.app/xml/
  4. #SERVICE=https://reallyfreegeoip.org/xml/
  5. SERVICE=https://xml.geoiplookup.io/
  6.  
  7. ###############
  8. # nmcli??
  9. # https://developer.gnome.org/NetworkManager/stable/nmcli.html
  10. ###############
  11. NET_iface="`ip route | grep -n default | sort -b -k 9 | awk 'NR==1 {print $5}'`"
  12. if [ -z $NET_iface ]; then
  13.     echo -e "------\n Non c'è connessione di rete\n-------"
  14.     exit 1
  15. else
  16.     ping -s 1 -l 1 -c 1 gnu.org &>/dev/null
  17.     PING_EXIT=$?
  18.     if [ $PING_EXIT -gt 0 ]; then
  19.         echo -e "-------\n ping -c 1 gnu.org  exit $PING_EXIT"
  20.         echo -e " Non c'è connettivita su Internet\n--------"
  21.         exit 1
  22.     fi
  23. fi
  24.  
  25. #QQ="<Response>
  26.     #<IP>188.218.28.144</IP>
  27.     #<CountryCode>IT</CountryCode>
  28.     #<CountryName>Italy</CountryName>
  29.     #<RegionCode>25</RegionCode>
  30.     #<RegionName>Lombardia/lomb</RegionName>
  31.     #<City></City>
  32.     #<ZipCode>20121</ZipCode>
  33.     #<TimeZone>Europe/Rome</TimeZone>
  34.     #<Latitude>10</Latitude>
  35.     #<Longitude>-10.00000</Longitude>
  36.     #<MetroCode>0</MetroCode>
  37. #</Response>"
  38.  
  39. QQ="`curl -s -A "$thisFile" -k -L $SERVICE$1`"
  40. QQ=${QQ//$'\n'/} # rimuone i fine riga
  41. QQ=${QQ//\<\?xml*\?\>/} # rimuove <?xml version="1.0" encoding="UTF-8"?>
  42.  
  43. thisFile="$BASHPID `basename $0`"
  44.  
  45. rdom () { # https://stackoverflow.com/questions/893585/how-to-parse-xml-in-bash
  46.     local IFS="\/\> "
  47.     #local IFS="\> "
  48.     read -d \< E C
  49. }
  50.  
  51. while rdom; do
  52.     if [ -n "$E" ]; then
  53.         X=${E^^} # upper case
  54.         if [ $X == RESPONSE -o $X == DATA ]; then
  55.             if [ ! -z $1  ]; then
  56.                 X="$E for \"$1\" from \"$SERVICE\""
  57.                 echo $X
  58.             else
  59.                 echo "\"$E\" for your Internet address from \"$SERVICE\""
  60.             fi
  61.             echo ------
  62.         else
  63.             eval $X=\"$C\"
  64.             echo $E=$C
  65.         fi
  66.     fi
  67. done <<< "$QQ"
  68.  
  69. if [ -n "$IP" ]; then
  70.     echo ---------
  71.     if [[ ${#LATITUDE} -eq 1 && $LATITUDE -eq 0 && \
  72.           ${#LONGITUDE} -eq 1 && $LONGITUDE -eq 0 ]]; then
  73.         LAT=NOLatitude ; LON=NOLongitude
  74.     else
  75.         LAT=$LATITUDE LON=$LONGITUDE
  76.     fi
  77.     #ISNUMBER=^-?[0-9\.0-9]+$
  78.     ISNUMBER=^[+-]?[[:digit:]]
  79.     if [[ $LAT =~ $ISNUMBER && $LON =~ $ISNUMBER ]]; then
  80.  
  81. ########
  82. # parameter-substitution
  83. # http://www.pluto.it/files/ildp/guide/abs/parameter-substitution.html
  84. ########
  85.         if [ -n "$CITY" ]; then
  86.             CITY=${CITY// /+}
  87.             CITY=${CITY//(/}
  88.             CITY=${CITY//)/}
  89.             PLACE=/place/$CITY
  90.  
  91.             if [ -n "$REGIONNAME" ]; then REGIONname=${REGIONNAME// /+}; fi
  92.             if [ -n "$REGION" ]; then REGIONname=${REGION// /+}; fi
  93.             if [ -n "$REGIONname" ]; then
  94.                 if [ -n "$CITY" ]; then
  95.                     PLACE=$PLACE,+$REGIONname
  96.                 else
  97.                     PLACE=/place/$REGIONname
  98.                 fi
  99.             fi
  100.  
  101.             if [ -n "$COUNTRYNAME" ]; then COUNTRYname=${COUNTRYNAME// /+}; fi
  102.             if [ -n "$COUNTRY_NAME" ]; then COUNTRYname=${COUNTRY_NAME// /+}; fi
  103.             if [ -n "$COUNTRYname" ]; then
  104.                 if [ -n "$CITY" -o -n "$REGIONname" ]; then
  105.                     PLACE=$PLACE,+$COUNTRYname
  106.                 else
  107.                     PLACE=/place/$COUNTRYname
  108.                 fi
  109.             fi
  110.         else
  111.             PLACE=
  112.         fi
  113.  
  114.         echo " url-OSM=https://www.openstreetmap.org/?mlat=$LAT&mlon=$LON&zoom=10"
  115.         echo "url-GMap=https://www.google.com/maps$PLACE/@$LAT,$LON,10z"
  116.         echo ------
  117.     fi
  118.  
  119.     if [ `which fping` ]; then
  120.         HOST_NAME=`fping -dA -r 1 $IP`
  121.         echo hostname=$HOST_NAME
  122.         echo -----
  123.         echo " prova host -a $IP"
  124.         if [ ! -z $1 ]; then echo " oppure host -a $1" ; fi
  125.     fi
  126. else
  127.     echo ------
  128.     echo -e "   forse il nome di dominio \"$1\" non é corretto"
  129.     echo -e "\t$SERVICE$1"
  130.     echo -e "   $QQ" | head -n 5
  131.     echo ------
  132. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement