envíeme un correo electrónico cuando cambie la ip externa

0

Estoy tratando de escribir un script bash para mi servidor. Lo que hace este script es curl para obtener la última dirección IP de mi casilla y luego enviarme un correo electrónico si es diferente de la antigua dirección IP almacenada en un archivo.

Esto es lo que tengo ahora:

#!/bin/bash
#if ip address changes do
x=$(curl -4 "icanhazip.com")
y=$(cat ./oldIP.txt )
if [ "$x"!="$y" ];
    then
    echo "Current IP Address is $x"
    echo "Previous IP address is $y"
#   y=$x
elif [ "$x"="$y"]
    then
    echo "The IP addresses are the same"
fi
#send email to me

Intenté usar if; then; else;también, sin embargo, no puedo hacer que el script reaccione de manera diferente cuando las direcciones IP son las mismas.

Creo que el problema proviene de mi declaración de variable para $y.

mikeymop
fuente

Respuestas:

1

Debe dejar espacios entre los operandos dentro de los corchetes de prueba [].

#!/bin/bash
#if ip address changes do
x=$(curl -4 icanhazip.com )
y=$(cat ./oldIP.txt )
if [ "$x" != "$y" ]
    then
    echo "Current IP Address is $x"
    echo "Previous IP address is $y"
#   y=$x
else
    echo "The IP addresses are the same"
fi
#send email to me
Oleg Bolden
fuente
Encontré eso, y terminé arreglando el espacio en el corchete de cierre de la línea 5, sin embargo, el problema persistió, aún ignoró mi declaración else.
mikeymop
Sin embargo, es extraño, vim resalta la sintaxis correctamente. Sin embargo, intenté elseif y agregué si ["$ x" = "$ y"] y noté que la segunda vez que $ y se llamaba se resaltaba en rojo en lugar de púrpura. (Colores predeterminados de ubuntu)
mikeymop
En bash, se escribe "else if"elif
glenn jackman
En su código, tiene otra cláusula [] en la décima fila con el mismo problema. Lo reemplacé con una elsedeclaración. Simplemente copie mi código y verifíquelo.
Oleg Bolden