Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- ###########
- # http://ip-api.com/
- # ottimo finché rimane free ma non è OPENSOURCE
- # da studiare anche per la sezione DNS
- # var SERVICE impostata dalla funzione checkCurl
- #SERVICE=http://ip-api.com/json/$MYIP?fields=66830335
- #/json/{query}?fields=status,message,continent,continentCode,country,countryCode,region,regionName,city,district,zip,lat,lon,timezone,offset,currency,isp,org,as,asname,reverse,mobile,proxy,hosting,query
- # /json/{query}?fields=66846719
- # senza "status"
- # /json/{query}?fields=66830335
- # "message" included only when status is fail
- # Can be one of the following: private range, reserved range, invalid query
- ###########
- ###############
- function netCheck {
- # controllo i route "default" | ordino il valore di "metric" | awk print il nome dell'interfaccia.
- NET_iface="`ip route | grep -n default | sort -b -k 9 | awk 'NR==1 {print $5}'`"
- if [ -z $NET_iface ]; then
- echo "$0 $1 $2 $3"
- echo "☮-----------------------☮"
- echo " Non c'è connessione di rete"
- echo "☮-----------------------☮"
- #help
- exit 1
- fi
- REMOTE_HOST=gnu.org
- if [ `which fping` ]; then
- PING_bin="fping -I $NET_iface -r1 -b1 -M -qaA $REMOTE_HOST"
- #PING_bin="fping -Aaq $REMOTE_HOST"
- REMOTE_HOSTip="`$PING_bin`"
- PING_EXIT="EXIT $?"
- #echo $REMOTE_HOST $REMOTE_HOSTip
- else
- PING_bin="ping -s 1 -l 1 -c 1 $REMOTE_HOST"
- #REMOTE_HOST="`$PING_bin | grep -o 'from[[:space:]][[:print:]]*)' | tr -d '()' | awk '{print $2" "$3}'`"
- #REMOTE_HOSTip="`$PING_bin | grep -io 'ping[[:space:]]'$REMOTE_HOST'[[:print:]]*)' | tr -d '()' | awk '{print $3}'`"
- REMOTE_HOSTip="`$PING_bin 2>/dev/null | grep -io 'ping[[:space:]]'$REMOTE_HOST'[[:print:]]*)' | tr -d '()' | awk '{print $3}'`"
- #echo $REMOTE_HOST $REMOTE_HOSTip
- fi
- if [ -z $REMOTE_HOSTip ]; then
- echo "$0 $1 $2 $3"
- echo "☮-----------------------☮"
- echo " $PING_EXIT`test -z "$PING_EXIT" && echo ERRORE ` $PING_bin "
- echo " Non c'è connettivita su Internet"
- echo "☮-----------------------☮"
- #help
- exit 1
- fi
- #LOCAL_NET_INFO="`ip route get $REMOTE_HOSTip | awk 'NR==1 {print "LOCAL_IPdev="$5 "\nLOCAL_IP4="$7 "\nLOCAL_GTW="$3}'`"
- #for Q in $LOCAL_NET_INFO; do
- #eval $Q
- #done
- LOCAL_IPdev="`ip route | grep -n default | sort -b -k 9 | awk 'NR==1 {print $5}'`"
- LOCAL_IP4="`ip address show $LOCAL_IPdev | grep 'inet[ ][0-9]*.' | awk '{print $2}'`"
- LOCAL_GTW="`ip route | grep -n default | sort -b -k 9 | awk 'NR==1 {print $3}'`"
- #echo -e "LOCAL_NET_INFO\n$LOCAL_NET_INFO"
- #echo ---------
- #echo "LOCAL_IPdev $LOCAL_IPdev"
- #echo " LOCAL_IP4 $LOCAL_IP4"
- #echo " LOCAL_GTW $LOCAL_GTW"
- # controllo i route "default" | ordino il valore di "metric" | awk print il nome dell'interfaccia.
- NET_iface="`ip route | grep -n default | sort -b -k 9 | awk 'NR==1 {print $5}'`"
- if [ -z $NET_iface ]; then
- echo "$0 $1 $2 $3"
- echo "☮-----------------------☮"
- echo " Non c'è connessione di rete"
- echo "☮-----------------------☮"
- #help
- exit 1
- else
- ping -s 1 -l 1 -c 1 gnu.org &>/dev/null
- PING_EXIT=$?
- if [ $PING_EXIT -gt 0 ]; then
- echo "$0 $1 $2 $3"
- echo "☮-----------------------☮"
- echo " ping -c 1 $REMOTE_HOST exit $PING_EXIT"
- echo " Non c'è connettivita su Internet"
- echo "☮-----------------------☮"
- #help
- exit 1
- fi
- fi
- } #END function netCheck
- ###############
- ################
- function curlCheck {
- if [ `which curl` ]; then
- SERVICE=http://ip-api.com/json/$MYIP?fields=66830335
- # Per user-agent di curl
- USER_AGENT="#`basename $0`_$BASHPID#"
- # curl
- # -s Silent
- # -k Allow insecure server connections
- # -L Follow redirects
- # -A Send User-Agent <name> to server
- # -v Make the operation more talkative
- QQ="curl$CURL_v -s -k -L -A$USER_AGENT $SERVICE"
- # per test
- # "status":"success",
- #QQ='{"continent":"Europe","continentCode":"EU","country":"Luxembourg","countryCode":"LU","region":"LU","regionName":"Luxembourg","city":"Luxembourg","district":"","zip":"L-1661","lat":49.6116,"lon":6.13193,"timezone":"Europe/Luxembourg","offset":7200,"currency":"EUR","isp":"GANDI is an ICANN accredited registrar","org":"","as":"AS29169 GANDI SAS","asname":"GANDI-AS","reverse":"xvm-109-80.dc2.ghst.net","mobile":false,"proxy":false,"hosting":true,"query":"46.226.109.80"}'
- else
- echo $0 $1 $2 $3
- echo ☮---------------------☮
- echo " installa \"curl\""
- echo ☮---------------------☮
- exit 1
- fi
- } #END function curlCheck
- #############
- ###############
- function start {
- #echo argomenti ${#@}
- COUNT=0
- for ARG in $@ ; do
- COUNT=$(($COUNT+1))
- # solo i primi 3 argomenti in qualsiasi ordine per $@
- if [ "$COUNT" -le "3" ]; then
- case $ARG in
- v | -v )
- CURL_v=" -v"
- ;;
- h | -h )
- help $@
- ;;
- *)
- # ipAddress nomeDns da controllare
- # viene verificato da QQ="curl$CURL_v -s -k -L -A$USER_AGENT $SERVICE"
- # json "message":
- MYIP="$ARG"
- ;;
- esac
- fi
- done
- COUNT=
- } #END function start
- ################
- ##############
- function help {
- cat <<WRITEhelp
- `echo $0 $@`
- ☮---- HELP ----------☮
- # solo i primi 3 argomenti in qualsiasi ordine per \$@
- # `basename $0` [ -v | IPaddress-NomeDNS ]
- # -v imposta --verbose per la risposta di "curl"
- # "IPaddress" oppure "NomeDNS" per il check online
- #
- # `basename $0` [ IPaddress-NomeDNS ]
- # per il check online per l'indirizzo fornito
- #
- # `basename $0`
- # senza parametri check on line della connessione internet.
- #
- # `basename $0` [ -h ]
- # questo help
- #
- # -v imposta curl --verbose
- # -h chiama la funzione help
- # - indirizzo da controllare, se non fornito
- # la risposta di $SERVICE si riferisce alla
- # connessione internet in uso"
- ☮-----------------------☮
- WRITEhelp
- exit 1
- } #END function help
- ###############
- ##################
- # prepara i valori "json" per eval "$E=$C"
- function var_value { # https://stackoverflow.com/questions/893585/how-to-parse-xml-in-bash
- local IFS=:
- read -d \| E C # E=Entity C=Content
- } # END function var_value
- ##################
- start $@
- netCheck $@
- curlCheck $@
- #############################
- echo $0 $1 $2 $3
- echo "☮ ####################### ☮"
- echo " $QQ "
- echo "☮ ####################### ☮"
- #############################
- QQ="`$QQ`"
- # aggiusto l'output di "curl" per elaborarlo
- QQ=`echo -e "$QQ" | sed 's|,"|\|"|g' | tr -d '{' | tr '}' '\|'`
- while var_value ; do
- # nome della VAR tutto upper senza apici
- X=`echo ${E^^} | sed 's|"||g'`
- #X="${E^^}"
- #X="${X//\"/}"
- if [ $X == OFFSET ]; then
- OFFSETh=`eval TZ=$TIMEZONE date +%Z%::z`
- #C="$C tz:$(($C/3600))"
- C="$C tz:$OFFSETh"
- fi
- eval "$X='$C'"
- echo "$X=$C"
- done <<<"$QQ"
- if [ -n "$MESSAGE" ]; then
- echo "----------------------------"
- echo " `basename $0` $1 $2 $3"
- echo " ERROR-$MESSAGE-»»»$QUERY«««"
- echo "----------------------------"
- exit 1
- fi
- echo \###################
- if [ -n "$QUERY" ]; then
- if [ -z $MYIP ]; then
- if [ `which fping` ]; then
- LOCAL_GTW=`fping -I $LOCAL_IPdev -r1 -b1 -M -qnaA $LOCAL_GTW`
- fi
- NET_iface_mac="`ifconfig $NET_iface | \
- grep -ioe 'ether \([[:xdigit:]]*:\)\{5\}[[:xdigit:]]*' | \
- grep -ioe '\([[:xdigit:]]*:\)\{5\}[[:xdigit:]]*'`"
- ALL_LOCALip="`hostname -I``hostname -i`"
- echo "questo computer-\"$HOSTNAME\""
- echo " iFace $LOCAL_IPdev | mac ${NET_iface_mac^^}"
- echo " ip $LOCAL_IP4 | gtw $LOCAL_GTW"
- echo "tutti gli IP di \"`hostname -f`\""
- echo " ${ALL_LOCALip// / | }"
- echo "\"`hostname -f`\"$LOCAL_IP4»»$LOCAL_GTW»»$QUERY»»INTERNET««"
- else
- if [ "$MYIP" == "QUERY" ]; then
- echo $MYIP
- else
- echo $MYIP -- $QUERY
- fi
- fi
- fi
- echo \###################
- if [ `which fping` ]; then
- #FPING="fping -daA -r 1 ${QUERY//\"/}"
- #FPING="fping -I $NET_iface -dA -b8 -c1 -r1 ${QUERY//\"/}"
- FPING="fping -I $NET_iface -dA -r1 ${QUERY//\"/}"
- echo $FPING
- FPING=`$FPING`
- echo "$FPING"
- echo -----
- echo " prova | host -a ${MYIP//\"/}"
- echo " oppure | host -a ${QUERY//\"/}"
- fi
- if [ -n "$QUERY" ]; then
- echo ---------
- if [[ ${#LAT} -eq 1 && $LAT -eq 0 && \
- ${#LON} -eq 1 && $LON -eq 0 ]]; then
- LAT=NOLatitude ; LON=NOLongitude
- else
- LAT=$LAT; LON=$LON
- fi
- #ISNUMBER=^-?[0-9\.0-9]+$
- ISNUMBER=^[+-]?[[:digit:]]
- if [[ $LAT =~ $ISNUMBER && $LON =~ $ISNUMBER ]]; then
- ########
- # parameter-substitution
- # http://www.pluto.it/files/ildp/guide/abs/parameter-substitution.html
- if [ -n "$CITY" ]; then
- CITY=${CITY// /+}
- CITY=${CITY//(/}
- CITY=${CITY//)/}
- CITY=${CITY//\"/}
- PLACE=/place/$CITY
- if [ -n "$REGIONNAME" ]; then
- REGIONNAME=${REGIONNAME// /+}
- REGIONNAME=${REGIONNAME//\"/}
- PLACE=$PLACE+$REGIONNAME
- fi
- if [ -n "$COUNTRY" ]; then
- COUNTRY=${COUNTRY// /+}
- COUNTRY=${COUNTRY//\"/}
- PLACE=$PLACE+$COUNTRY
- fi
- else
- PLACE=
- fi
- echo " url-OSM=https://www.openstreetmap.org/?mlat=$LAT&mlon=$LON&zoom=10"
- echo " url-ORS=https://classic-maps.openrouteservice.org/directions?n1=$LAT&n2=$LON&n3=14&b=1c&c=0&k1=en-US&k2=km"
- echo "url-GMap=https://www.google.com/maps$PLACE/@$LAT,$LON,3.71z"
- #echo "https://classic-maps.openrouteservice.org/directions?n1=$LAT&n2=$LON&n3=10&b=1c&c=0&k1=en-US&k2=km"
- #echo "https://classic-maps.openrouteservice.org/directions?n1=$LAT&n2=$LON&n3=14&b=1c&c=0&k1=en-US&k2=km"
- echo ------
- fi
- else
- echo ------
- echo -e " forse il nome di dominio \"$1\" non é corretto"
- echo -e "\t$SERVICE$1"
- echo -e " $QQ" | head -n 5
- echo ------
- fi
- exit 0
- ############################################################################
- ############################################################################
- ############################################################################
- ############################################################################
- ############################################################################
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement