我需要通过 scp 更新服务器上包含我的外部 IP 地址的文件。在更新文件之前,我想确保它包含实际的 IP 地址,否则不得在服务器上更新它。
我的 cron 脚本检查我的 IP 经常导致垃圾错误结果。
我怎样才能实现我的目标?
答案1
如果您当前正在使用
curl icanhazip.com > ip-location1.txt
然后,通过添加-f
选项,如果网络服务器返回错误(并且没有输出),则可以curl
返回错误,因此希望不需要弄清楚输出是 IP 地址还是 HTML 错误消息。
curl -f icanhazip.com > ip-location1.txt
稍微复杂一点,您可以添加重试功能:
for i in 1 2 3 # if you want more retries, add more numbers here
do
curl -f icanhazip.com > ip-location1.txt
if [ $? -eq 0 ] && [ -s ip-location1.txt ]
then
break
fi
# if we get here, the current attempt failed
sleep 5 # be nice and wait a bit before retrying instead of spamming the service
done
if [ ! -s ip-location1.txt ]
then
echo "i cannot haz ip."
# do whatever you want to do in case of all the retries fail
fi