Я написал скрипт для запуска из cron каждые 5 минут.
Он принимает существующий IP-адрес в файле с именем "nowipaddr", а затем запускает цикл if, чтобы проверить новый IP-адрес с существующим IP-адресом, и, если оба IP-адреса остаются прежними, он может пропустить отправку электронной почты. В противном случае при изменении IP-адреса следует отправить электронное письмо с новым IP-адресом.
Проблема в том, что он по-прежнему отправляет мне электронное письмо каждые 5 минут, независимо от того, изменяется IP или нет. Если есть изменения, он обновляет файл "nowipaddr" с новым IP-адресом и отправляет электронное письмо. Если нет изменений, он делает то же самое.
Я скопировал код из этого ответа https://askubuntu.com/questions/374894/server-script-that-sends-an-email-every-time-the-global-ip-changes?fbclid=IwAR3mU7n5oMEMcJPTV8P5y8Icy01x4-iH4Bc6Lck3vWJNUHNxaCNJUtmvElg
#!/bin/bash
NOWIPADDR="/home/scripts/nowipaddr"
GETIPADDR="dig +short myip.opendns.com @resolver1.opendns.com"
LOG="/home/scripts/ip.log"
timestamp=$( date +%T )
curDate=$( date +"%m-%d-%y" )
if [ -f $NOWIPADDR ]; then
if [[ `$GETIPADDR` = $(< $NOWIPADDR) ]]; then
echo $curDate $timestamp " IP address check: " $(< $NOWIPADDR) >> $LOG
else
$GETIPADDR > $NOWIPADDR
mail -s "New Server IP" email@gmail.com < $NOWIPADDR
fi
else
curl $GETIPADDR > $NOWIPADDR
mail -s "Server IP" email@gmail.com < $NOWIPADDR
fi
Я хочу, чтобы он отправлял электронное письмо как раз при изменении IP