myip 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. #!/usr/bin/env bash
  2. #DONT ULTRAPASS '|'
  3. #
  4. #-----------HEADER------------------------------------------------------------|
  5. #AUTOR
  6. # Jefferson Rocha <lrcjefferson@gmail.com>
  7. #
  8. #PROGRAM
  9. # MYIP
  10. #
  11. #DESCRIPTION
  12. # Imprimi ip externo e Geolocalização, com uso do curl#
  13. # print external ip and Geolocation, with curl
  14. #
  15. #CHANGELOG
  16. # V1.2 - Jefferson Rocha
  17. # -Added server v4.ifconfig.co and left default server
  18. # -ifconfig.me stayed as a safeguard if the first one fails!
  19. #
  20. # V1.3 - Jefferson Rocha
  21. # -Added more servers faster for
  22. # dry ip query.
  23. # -Added support for geolocation.
  24. # -Now the program is bilingual (BR and ENG)
  25. # -Change all vars for eng suport.
  26. # -Added conference in -geoip, param is null? exit.
  27. #
  28. #-----------------------------------------------------------------------------|
  29. #-----TEST-------------#
  30. # Obtain lang system;
  31. if [[ "$LANG" = "pt_BR.UTF-8" ]]; then
  32. lang="br"
  33. elif [[ "$LANG" = "pt_BR.utf8" ]]; then
  34. lang="br"
  35. elif [[ "$LANG" = "pt_BR.utf-8" ]]; then
  36. lang="br"
  37. else
  38. lang="us"
  39. fi
  40. # Curl exist?
  41. if [[ "$lang" = "br" ]]; then
  42. [[ $(which curl) ]] || { echo "Necessita do curl para continuar" ; exit 1 ;}
  43. else
  44. [[ $(which curl) ]] || { echo "Need curl for continue" ; exit 1 ;}
  45. fi
  46. #----------------------#
  47. #------VARS------------#
  48. version="1.3"
  49. #--Colors
  50. red="\033[31;1m"
  51. cyan="\033[36;1m"
  52. end="\033[m"
  53. #--List servers for show ip
  54. server1="icanhazip.com" # Fast link
  55. server2="v4.ifconfig.co" # Fast link
  56. #server3="http://whatismyip.akamai.com" # Medium Link
  57. #server2="ifconfig.me" # Slow link
  58. #--Server Geoip
  59. server_geoip="ipinfo.io"
  60. #----------------------#
  61. #-----FUNCTIONS--------#
  62. pure_ip(){
  63. echo -e "\nWait..."
  64. exec_=$(if ! curl -s $server1; then curl -s $server2 ; fi) # Server 1 fail? ok... run server2
  65. echo -e "\n${red}Seu External IP is:${cyan} ${exec_}${end}\n"
  66. }
  67. ip_puro(){
  68. echo -e "\nAguarde..."
  69. local exec_=$(if ! curl -s $server1; then curl -s $server2 ; fi) # Server 1 fail? ok... run server2
  70. echo -e "\n${red}Seu IP Externo é:${cyan} ${exec_}${end}\n"
  71. }
  72. geo_ip(){
  73. local show_me=$(curl -s ${server_geoip}/${ip})
  74. echo "$show_me" | \
  75. sed 's/"//g ; s/{// ; s/}// ; s/,//g' | tr a-z A-z
  76. }
  77. geo_ip_br(){
  78. local show_me=$(curl -s ${server_geoip}/${ip}) # Magic here.
  79. echo "$show_me" | \
  80. sed 's/"//g ; s/city/Cidade/ ; s/region/REGIÃO/ ; s/country/Pais/ ; s/loc/Localização/ ; s/{//g ; s/}// ; s/,//g' | tr a-z A-z
  81. }
  82. #----------------------#
  83. #--Start
  84. if [[ "$lang" = "br" ]]; then
  85. case $1 in
  86. -ip) ip_puro ;; # Call Func
  87. -geoip)
  88. shift
  89. ip="$1"
  90. [[ -z "$ip" ]] && { echo "Passe um ip como parâmetro, examplo 'myip -geoip 8.888.8.8'" ; exit 1 ;}
  91. geo_ip_br ;; # Call Func
  92. *) echo "Usage" ;;
  93. esac
  94. else
  95. case $1 in
  96. -ip) pure_ip ;; # Call Func
  97. -geoip)
  98. shift
  99. ip="$1"
  100. [[ -z "$ip" ]] && { echo "Pass ip parameter, example 'myip -geoip 8.888.8.8'" ; exit 1 ;}
  101. geo_ip ;; # Call Func
  102. esac
  103. fi