gpt4 book ai didi

bash - Cron 作业的工作方式与独立工作不同

转载 作者:行者123 更新时间:2023-11-29 09:49:11 24 4
gpt4 key购买 nike

我有一个 shell 脚本,它会定期检查 ADSL 外部 IP 地址,如果它发生了变化,就会将其发送到我的电子邮箱。

#! /bin/sh
NEWIP=`/usr/bin/curl ifconfig.me`
OLDIP=`cat ./current`
logger "$NEWIP ... $OLDIP"
if [ "$NEWIP" != "$OLDIP" ]; then
TIME=`/bin/date`
/usr/bin/sendEmail -v -f ip_watcher@xxxoo.com \
-s smtp.gmail.com:587 -xu ip_watcher@xxxoo.com -xp xxxxxx \
-t xxx@xxxxx.com \
-o tls=yes \
-u "$NEWIP" \
-m "$NEWIP $TIME" -a
/bin/echo "$NEWIP" > ./current
logger "IP of bjserver1 has changed ..."
else
logger "New IP is the SAME with old. not sending ..."
fi

当我从命令行运行它时,它工作得很好。但是在我把它放入cron之后,NEWIP和OLDIP总是一样的。我不知道为什么,有人可以帮忙吗?

最佳答案

什么是./current

您没有在脚本中使用绝对路径,因此该文件将位于它运行的任何位置。您应该使用绝对路径。

cron 和命令行运行之间唯一的其他显着区别是脚本在其帐户下执行的用户。确保该帐户(如果它不是 root)具有执行您要求它执行的操作的重要权限。

或者,更好的是,使用已建立的动态 DNS 客户端,这样您就无需担心外部主机名。您确实意识到您依赖该网站来保持诚实和正直,对吧?

关于bash - Cron 作业的工作方式与独立工作不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9238884/

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