[Bash] Script que loggea tu IP publica.

  • 1 Respuestas
  • 4811 Vistas

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado xianur0n

  • *
  • Underc0der
  • Mensajes: 7
  • Actividad:
    0%
  • Reputación 0
    • Ver Perfil

[Bash] Script que loggea tu IP publica.

  • en: Enero 18, 2016, 03:16:39 pm
Bueno hacen unos dias me estuve preguntando por curiosidad que cada tiempo mi ip publica cambia. Entonce decidí escribir un script que loggeara mi ip publica en un archivo de texto y escriba en el archivo cuando la ip cambie y la nueva ip. la primera vez que el script corre pues mostrara texto en el standard output que es la pantalla. pero la segunda y las consecuentes veces si el archivo no a cambiado el script correrá de casi manera no interactiva chekeara si la ip cambio si no escribe en el archivo la ip con la fecha de cuando corrió y si la ip cambio comoquiera escribirá en el archivo que la ip a cambiado y nos loggeara la nueva ip. lo unico que la fuente de donde saco la ip no es muy confiable si saben de alguna mejor por favor dejarme saber. el script es perfecto para correrlo una vez y después crear una linea en el crontab para que el script corra una vez al dia sin ninguna interacción con el usuario.

Código: Bash
  1. #!/bin/bash
  2.  
  3. ##Sencillo script que permite loggear la ip publica detras de una coneccion normal al internet
  4. ##o mediante un vpn. El scrip guarda la informacion en el archivo donde se loggearan las ip en la variable filedir. Sientanse
  5. ##a gustos de modificar la variable a donde quieran guardar el archivo con las ip. Si modifican la
  6. ##variable no olviden de especificar la ruta completa + el nombre del archivo como lo quieran llamar,
  7. ##sino bash dara un error por que no puede redireccionar output a un directorio. El scrip obtendra
  8. ##ls IP publica mediante el comando curl, y desde el website www.ipecho.net/plain. Si saben de
  9. ##otra forma mas segura para conseguir la IP por favor dejarme saber. El script esta escrito
  10. ##de manera que sea facil correrlo al encender el computador y pueda corren en el background. Si
  11. ##el archivo ya existe y el script es corrido, el script buscara en la ultima ip loggeada en el
  12. ##archivo y y la compara con la IP que este tengamos en el comento de correr el script. Si
  13. ##las ip no son iguales. El script loggeara algo dejandonos saber que la ip a cambiado. y escribira
  14. ##en el archivo la nueva IP.
  15. ## ESCRITO POR:xianur0n
  16.  
  17. #Ruta al archivo donde se loggearan las IP
  18. filedir=~/privateip.list
  19.  
  20. #Si el script es corrido sin parametros y el archivo no
  21. #existe entonces mostrara en pantalla informacion
  22. if [[ -z "$1" ]]; then
  23.    if [[ ! -f "$filedir" ]]; then
  24.    echo -e "$filedir no existe, creandolo..... "    
  25.    echo "Creando File"
  26.    echo ".............."
  27.    fi
  28. #Si el Script es corrido con parametros nos muestra
  29. #como se debe de usar y termina.
  30. elif [[ -n "$1" ]]; then
  31.    echo "USAGE:./scriptname"                      
  32.    exit 100
  33. else
  34.    true;
  35. fi
  36. #Guarda ip en variable
  37. privateip=$(curl -s http://ipecho.net/plain)
  38.  
  39. #Chekea que el Archivo exista
  40. #encaso de que archivo exista, Chekea la ip
  41. #Obtine ultima IP loggeada en archivo para comparacion
  42. #Compara IP en archivo y IP actual
  43. #Si IP no son iguales escribe ls IP en el Archivo
  44. if [[ -f "$filedir" ]]; then
  45.  varip=$(curl -s http://ipecho.net/plain)
  46.  fileip=$(tail -1 privateip.list | awk '{print $7}')
  47.  if [[ "$varip" != "$fileip" ]]; then
  48.   echo -e "TU IP A CAMBIADO!!!!!!!!" >> $filedir
  49.   echo -e "`date`                        $varip" >> $filedir
  50. else
  51.   echo -e "`date`                        $varip" >> $filedir
  52.  fi
  53. fi
  54. #si el archivo no existe crea el formato del archivo.
  55. #y escribe por primera vez la IP publica al momento de correr el script.
  56. if [[ ! -f "$filedir" ]]; then
  57.   echo -e "Date                                                IP" >> $filedir
  58.   echo -e "`date`                        $privateip" >> $filedir
  59. fi
  60.  
  61. exit 0
  62.  
« Última modificación: Enero 18, 2016, 09:32:55 pm por EPSILON »

Desconectado zelen3

  • *
  • Underc0der
  • Mensajes: 7
  • Actividad:
    0%
  • Country: 00
  • Reputación 0
  • meh~
    • Ver Perfil

Re:[Bash] Script que loggea tu IP publica.

  • en: Enero 21, 2020, 01:04:54 am
Ah que curioso yo ando haciendo lo mismo, me encontré tu script y me ayudo a entender un poco mejor lo que yo quería hacer jaja solo que me sucede algo raro al que hice yo, por tiempos funciona y por tiempos no xD 

Código: [Seleccionar]
#!/bin/bash

# Date: 20/01/2020 - 21:14   #
# Autor: zelen3            #
# Descripcion:            #
# Script que te muestra tu ip publica y te da un registros    
# de solo las veces que esta ha cambiado               
# la info es sacada de la web https://canyouseeme.org               


# PD: los archivos se guardan en el directorio temporal del sistema "/tmp"   
# pero puedes modificarlos para que se guarden en cualquier otro directirio   
# solo cambias "/tmp/" por la ruta donde los vayas a guardar            

#   Variables    #

ipNew=/tmp/ip
ipReg=/tmp/ipReg
ipAnt=/tmp/ipAnt

# Comprueba si existe el archivo "ipNew", si no existe,          
# crea un nuevo archivo "ipNew", un nuevo archivo                
# para registro de ip's cambiadas"ipReg"                      
# y un nuevo archivo para comparar la ip anterior con la nueva ip   

# Si existe el archivo "ipNew" lo sobre escribe con una nueva ip    
# y sobreescribe el archivo "ipAnt" agarrando la anterior ip       
# desde los registros de "ipReg"                           

if [[ -e $ipNew ]];then

   $(curl -s https://canyouseeme.org | grep 'id="ip"' | cut -b 55-68 >$ipNew)
   echo
   echo
   echo
   $(cat $ipReg | tail -n1>$ipAnt)

else

   $(curl -s https://canyouseeme.org | grep 'id="ip"' | cut -b 55-68 >$ipNew)
   echo
   echo
   echo
   $(date >>$ipReg | cat $ipNew >>$ipReg)
   $(cat $ipReg | tail -n1>$ipAnt)
#   echo "Su ip publica es: $(cat $ipNew)"

fi

# Compara si "ipNew" e "ipAnt" tinene la misma direccion ip    
# si el resultado es que son iguales da 0, si no 1            

# (0)si son iguales muestra nada mas la ip sin cambios            
# (1)si son diferentes muestra la nueva ip y el registro de cambios

$(diff -q $ipNew $ipAnt >/dev/null)   
compValue=$?
if [[ $compValue -eq 1 ]]; then
      
      $(date >>$ipReg   | cat $ipNew >>$ipReg)
      echo
      echo
      echo "Su nueva ip publica es: $(cat $ipNew)"
      echo
      echo "Este es el registro de las ip:"
      echo "$(cat $ipReg) "
else

   echo "Su ip publica es: $(cat $ipNew)"
fi


# PD: por alguna extranha razon aveces tiende a buggearse   
# y comienza a sacar al revez el registro de ip :c          [color=black][/color]

btw muchas gracias por publicar tu script :)

« Última modificación: Enero 21, 2020, 02:17:07 am por zelen3 »

 

Energy Black: Un script sencillo que te avisará antes de que se agote la bateria

Iniciado por DtxdF

Respuestas: 0
Vistas: 81
Último mensaje Marzo 15, 2020, 08:37:06 pm
por DtxdF
Script para ejecutar un archivo BAT con salida nula

Iniciado por ANTRAX

Respuestas: 0
Vistas: 2616
Último mensaje Julio 18, 2011, 10:13:11 pm
por ANTRAX
Script para extraer el valor de una clave del registro

Iniciado por ANTRAX

Respuestas: 0
Vistas: 2647
Último mensaje Julio 18, 2011, 10:12:40 pm
por ANTRAX
Script para extraer el PID de un proceso

Iniciado por ANTRAX

Respuestas: 0
Vistas: 2334
Último mensaje Julio 18, 2011, 10:11:49 pm
por ANTRAX
Script que genera una estructura de directorios FHS

Iniciado por Stiuvert

Respuestas: 5
Vistas: 7997
Último mensaje Diciembre 27, 2016, 08:58:12 am
por nameless