gpt4 book ai didi

linux - 服务器脚本在不应该发送电子邮件的时候不断发送电子邮件

转载 作者:太空宇宙 更新时间:2023-11-04 05:10:01 24 4
gpt4 key购买 nike

我编写了一个脚本,每 5 分钟从 cron 运行一次。

它获取名为“nowipaddr”的文件中的现有 IP,然后运行 ​​if 循环来检查新 IP 与现有 IP,如果两个 IP 保持相同,则可以跳过发送电子邮件。否则,如果 IP 发生变化,它应该发送包含新 IP 的电子邮件。

问题是,无论 IP 是否发生变化,它仍然每 5 分钟向我发送一封电子邮件。如果有更改,它会使用新 IP 更新文件“nowipaddr”并发送电子邮件。如果没有改变,则执行相同的操作。

我从这个答案复制了代码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 发生变化时发送电子邮件

最佳答案

我对代码做了一些更改,看起来效果很好,但我想确保它是正确的方法

#!/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 [ `cat $NOWIPADDR` = `$GETIPADDR` ]; then
echo $curDate $timestamp " IP address check: " `cat $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

我变了

if [[ `$GETIPADDR` = $(< $NOWIPADDR) ]]; then

if [ `cat $NOWIPADDR` = `$GETIPADDR` ]; then

基于同一链接的其他答案

关于linux - 服务器脚本在不应该发送电子邮件的时候不断发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56570696/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com