Hola estoy intentando con un script que me notifique por Telegram cada vez que cambie la IP, con la ip publica no hay problema. Con la privada no soy capaz
#!/bin/bash
mensaje="La ip publica es $(curl fconfig.me) el $(date) Saludos..."
TOKEN="xx"
ID="xx"
URL="https://api.telegram.org/bot$TOKEN/sendMessage"
NOWIPADDR="/home/pi/script/ip.txt"
GETIPADDR="ifconfig.me"
timestamp=$( date +%T )
curDate=$( date +"%d-%m-%y" )
LOG="/home/pi/script/ip.log"
if [ -f $NOWIPADDR ]
then
if [ `cat $NOWIPADDR` = `curl $GETIPADDR` ]
then
echo "No hay cambios."
else
curl $GETIPADDR > $NOWIPADDR
echo $curDate $timestamp " IP publica: " $(< $NOWIPADDR) " IP privada " $(hostname -I) >> $LOG
echo "Nueva ip enviando notificacion"
curl -s -X POST $URL -d chat_id=$ID -d text="$mensaje"
fi
else
curl $GETIPADDR >> $NOWIPADDR
fi
En el momento que cambio
GETIPADDR="ifconfig.me"
Por
GETIPADDR="hostname -I"
Y esto es lo de menos por qué funciona siempre
mensaje="La ip privada es $(hostname -I) el $(date) Saludos..."
Alguna forma de modificar el script?
Enviado desde mi M2007J20CG mediante Tapatalk
Script en bash o php para notificar cambios IP privada
-
- Pi Alpha
- Mensajes: 17
- Registrado: 29 Dic 2020, 15:41
- Agradecido: 0
- Agradecimiento recibido: 0
- egrueda
- Pi God
- Mensajes: 3426
- Registrado: 10 Feb 2017, 19:31
- Agradecido: 7 veces
- Agradecimiento recibido: 269 veces
Pero no estás llamando al comando "$GETIPADDR", sino que le estás añadiendo una llamada a curl: "curl $GETIPADDR"
Ahí está el problema.
Ahí está el problema.
No respondo a privados ;-)
👉 Particiones en una MicroSD
👉 Cómo pedir ayuda en el foro
Invítame a un café
👉 Particiones en una MicroSD
👉 Cómo pedir ayuda en el foro
Invítame a un café
-
- Pi Alpha
- Mensajes: 17
- Registrado: 29 Dic 2020, 15:41
- Agradecido: 0
- Agradecimiento recibido: 0
Cómo lo soluciono? No lo acabo de entender..egrueda escribió:Pero no estás llamando al comando "$GETIPADDR", sino que le estás añadiendo una llamada a curl: "curl $GETIPADDR"
Ahí está el problema.
Enviado desde mi M2007J20CG mediante Tapatalk
- egrueda
- Pi God
- Mensajes: 3426
- Registrado: 10 Feb 2017, 19:31
- Agradecido: 7 veces
- Agradecimiento recibido: 269 veces
Cambia la línea:
Por:
Código: Seleccionar todo
curl $GETIPADDR > $NOWIPADDR
Código: Seleccionar todo
$GETIPADDR > $NOWIPADDR
No respondo a privados ;-)
👉 Particiones en una MicroSD
👉 Cómo pedir ayuda en el foro
Invítame a un café
👉 Particiones en una MicroSD
👉 Cómo pedir ayuda en el foro
Invítame a un café
-
- Pi Alpha
- Mensajes: 17
- Registrado: 29 Dic 2020, 15:41
- Agradecido: 0
- Agradecimiento recibido: 0
Hola, creo que eso ya lo probé. Lo pruebo y te digoegrueda escribió:Cambia la línea:
Por:Código: Seleccionar todo
curl $GETIPADDR > $NOWIPADDR
Código: Seleccionar todo
$GETIPADDR > $NOWIPADDR
Enviado desde mi M2007J20CG mediante Tapatalk
-
- Pi Alpha
- Mensajes: 17
- Registrado: 29 Dic 2020, 15:41
- Agradecido: 0
- Agradecimiento recibido: 0
No funciona, cierto es que obtengo la IP privada, pero siempre me envía la notificación como que la IP cambio.CarlosLSev escribió:Hola, creo que eso ya lo probé. Lo pruebo y te digoegrueda escribió:Cambia la línea:
Por:Código: Seleccionar todo
curl $GETIPADDR > $NOWIPADDR
Código: Seleccionar todo
$GETIPADDR > $NOWIPADDR
Enviado desde mi M2007J20CG mediante Tapatalk
Enviado desde mi M2007J20CG mediante Tapatalk
-
- Pi Alpha
- Mensajes: 17
- Registrado: 29 Dic 2020, 15:41
- Agradecido: 0
- Agradecimiento recibido: 0
Hola, ya tengo IP fija en eth0. Necesito saber qué IP tengo en wlan0, ya que le doy wifi por el móvil, y cada vez me crear una IP privada distintaAsirome escribió:También puedes forzar al router que una determinada MAC siempre tenga la misma IP
Enviado desde mi M2007J20CG mediante Tapatalk
- egrueda
- Pi God
- Mensajes: 3426
- Registrado: 10 Feb 2017, 19:31
- Agradecido: 7 veces
- Agradecimiento recibido: 269 veces
Vamos por partes.CarlosLSev escribió: 30 Sep 2021, 06:56 No funciona, cierto es que obtengo la IP privada, pero siempre me envía la notificación como que la IP cambio.
Quitando el "curl" hemos conseguido que se lea la IP privada, cosa que antes no tenías.
Si quieres obtener la IP privada, no debes usar curl ni en la línea 14 ni en la 18 ni en la 24
Creo que necesitas entender bien tu propio script y entender lo que hace cada comando, como curl
En la línea 14 dice:
if [ `cat $NOWIPADDR` = `$GETIPADDR` ]
Eso, al expandirse cada una de las dos variables, te va a dar un error de sintaxis porque las variables contienen espacios y no estás usando comillas.
Antes te funcionaría porque la salida del comando "curl ifconfig.me" no tiene espacios, pero la de "hostname -I sí los tiene
Tendría que ser así:
if [ "`cat $NOWIPADDR`" = "`$GETIPADDR`" ]
No es lo más elegante ni recomendado, pero es por no cambiar demasiado tu script
Luego en la línea 19 dice:
echo $curDate $timestamp " IP publica: " $(< $NOWIPADDR) " IP privada " $(hostname -I) >> $LOG
Ahí usas $NOWIPADDR para mostrar la IP pública, pero lo que tienes en $NOWIPADDR es la IP privada que has sacado con el comando "hostname -I"
A ver si con estas pistas puedes avanzar.
No respondo a privados ;-)
👉 Particiones en una MicroSD
👉 Cómo pedir ayuda en el foro
Invítame a un café
👉 Particiones en una MicroSD
👉 Cómo pedir ayuda en el foro
Invítame a un café
-
- Pi Alpha
- Mensajes: 17
- Registrado: 29 Dic 2020, 15:41
- Agradecido: 0
- Agradecimiento recibido: 0
Mil gracias, lo de quitar los curl ya lo había probado, pero no se me ocurrió lo de las comillas.
Lo de la linea 19 no me preocupa es para crear un log, ya lo modificaré.
Funciona perfecto, gracias
Enviado desde mi M2007J20CG mediante Tapatalk
Lo de la linea 19 no me preocupa es para crear un log, ya lo modificaré.
Funciona perfecto, gracias
Enviado desde mi M2007J20CG mediante Tapatalk