kyopages/scripts/diag_ip_public

117 lines
3.4 KiB
Bash
Executable File

#!/bin/bash
get_ip_public(){ # $1=IPv4|IPv6, assigne $ip_public
list_ip4(){
ip_test+=" http://whatismyip.akamai.com"
ip_test+=" http://ipof.in/txt"
ip_test+=" http://eth0.me"
ip_test+=" http://ipecho.net/plain"
ip_test+=" http://alma.ch/myip.cgi"
ip_test+=" http://checkip.amazonaws.com"
ip_test+=" http://eth0.me"
ip_test+=" http://ipecho.net/plain"
ip_test+=" api.infoip.io/ip" # http & https
ip_test+=" api.ipify.org" # http & https
ip_test+=" ipinfo.io/ip" # http & https
# ip_test+=" https://4.ifcfg.me" #down avec wget!
}
list_ip6(){
ip_test+=" http://ipv6.whatismyip.akamai.com"
ip_test+=" http://bot.whatismyipaddress.com"
ip_test+=" ip.tyk.nu" # http & https
ip_test+=" l2.io/ip" # http & https
ip_test+=" ident.me" # http & https
ip_test+=" icanhazip.com" # http & https
ip_test+=" wgetip.com" # http & https
ip_test+=" https://canhazip.com"
ip_test+=" https://tnx.nl/ip"
# ip_test+=" http://smart-ip.net/myip" #down avec wget?!
# ip_test+=" https://6.ifcfg.me" #down avec wget?!
}
list_ip4_dig(){
dig_test+=" whoami.akamai.net/@ns1-1.akamaitech.net"
dig_test+=" myip.opendns.com/@resolver1.opendns.com"
dig_test+=" myip.opendns.com/@resolver2.opendns.com"
dig_test+=" myip.opendns.com/@resolver3.opendns.com"
dig_test+=" myip.opendns.com/@resolver4.opendns.com"
}
list_ip6_dig(){
dig_test+=" -6/myip.opendns.com/aaaa/@resolver1.ipv6-sandbox.opendns.com"
dig_test+=" -6/myip.opendns.com/aaaa/@resolver2.ipv6-sandbox.opendns.com"
}
unset ip_public
local dig_test
local ip_test
if [ "$1" == "IPv4" ]; then
list_ip4_dig
list_ip4
ip_telnet=4.ifcfg.me
elif [ "$1" == "IPv6" ]; then
list_ip6_dig
list_ip6
ip_telnet=6.ifcfg.me
else return 1; fi
if which dig &>/dev/null && [ -z "$ip_public" ]; then
for ii in $dig_test ; do
ip_public=$(dig +short $(sed 's;/; ;g' <<< $ii))
# [ "$ip_public" ] && break
echo $(sed 's;/; ;g' <<< $ii) $ip_public # test
done
fi
echo "ip dig $ip_public"
unset ip_public # test
if which wget &>/dev/null && [ -z "$ip_public" ]; then
cmd="wget --quiet --tries=1 --timeout=5 -O - "
for ii in $ip_test ; do
ip_public=$($cmd $ii)
# [ "$ip_public" ] && break
echo -e "wget-$ii:\t $ip_public" # test
done
fi
echo "ip wget $ip_public"
unset ip_public # test
if which curl &>/dev/null && [ -z "$ip_public" ]; then
cmd="curl --silent --location --retry 0 --max-time 5" #--location pour aider redirections
for ii in $ip_test ; do
ip_public=$($cmd $ii)
# [ "$ip_public" ] && break
echo -e "curl-$ii:\t $ip_public" # test
done
fi
echo "ip curl $ip_public"
unset ip_public # test
if which telnet &>/dev/null && [ -z "$ip_public" ]; then
ip_public=$(telnet $ip_telnet 23 2>/dev/null | grep $1 | cut -d ' ' -f 4)
fi
echo "ip telnet $ip_public"
[ "$1" == "IPv6" ] && ip_temp=$ip_public
unset ip_public # test
if which nc &>/dev/null && [ -z "$ip_public" ] && [ "$1" != "IPv6" ]; then
ip_public=$(nc $ip_telnet 23 2>/dev/null | grep $1 | cut -d ' ' -f 4)
echo "ip nc $ip_public"
fi
[ "$1" == "IPv6" ] && ip_public=$ip_temp
if [ -z "$ip_public" ]; then
echo -e "il manque une des commandes suivantes:\n" \
"dig / wget / curl / telnet / nc \n" \
"ou les ip de test sont devenues défaillantes\n" \
"réessayer après avoir installé dig (dnsutils) et wget\n" \
"si l'erreur persiste, merci de prévenir $projet $contact"
fi
}
get_ip_public "IPv4"
echo "ip4: $ip_public"
get_ip_public "IPv6"
echo "ip6: $ip_public"