Schicken Sie mir eine E-Mail, wenn sich die externe IP ändert

Schicken Sie mir eine E-Mail, wenn sich die externe IP ändert

Ich versuche, ein Bash-Skript für meinen Server zu schreiben. Dieses Skript führt curl aus, um die neueste IP-Adresse meiner Box abzurufen und mir dann eine E-Mail zu senden, wenn sie von der alten, in einer Datei gespeicherten IP-Adresse abweicht.

Das habe ich jetzt:

#!/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

Ich habe if; then; else;auch versucht, es zu verwenden, kann das Skript jedoch nicht dazu bringen, anders zu reagieren, wenn die IP-Adressen gleich sind.

Ich glaube, das Problem rührt von meiner Variablendeklaration für her $y.

Antwort1

Sie müssen Leerzeichen zwischen den Operanden innerhalb der Testklammern [ ] lassen.

#!/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

verwandte Informationen