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.

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

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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.