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.