我有一个shell脚本,在该脚本中,我使用host
获取目标站点的IP,以更新ufw
并允许该IP的出站流量。然而,当我对同一个基本URL进行后续wget
调用时,它解析为不同的IP,因此被ufw
阻止。只是为了测试,我尝试ping URL,它返回了不同的第三个IP。
默认情况下,我们在ufw
中阻止所有出站流量,并且只启用我们需要出站的流量,所以我需要脚本来更新正确的IP,这样我就可以wget
内容。每个实例中的IP(host
与wget
(始终相同,但它们彼此返回的值不同,所以我不认为这只是DNS问题。如何获得一致的IP来更新防火墙,以便后续的wget
请求成功执行?作为一项测试,我禁用了防火墙,并且能够成功地从URL下载,所以问题肯定是要指向一个一致的IP。
HOSTNAME=<name of site to resolve>
LOGFILE=<logfile path>
Current_IP=$(host $HOSTNAME | head -n 1 | cut -d " " -f 4)
#this echoes the correct value
echo $Current_IP
if [ ! -f $LOGFILE ]; then
/usr/sbin/ufw allow out from any to $Current_IP
echo $Current_IP > $LOGFILE
echo New IP address found and logged >> ./download.log
else
Old_IP=$(cat $LOGFILE)
if [ "$Current_IP" = "$Old_IP" ] ; then
echo IP address has not changed >> ./download.log
else
/usr/sbin/ufw delete allow out from any to $Old_IP
/usr/sbin/ufw allow out from any to $Current_IP
echo $Current_IP > $LOGFILE
echo IP Address was updated in ufw >> ./download.log
fi
fi
在更新防火墙之后,随后的wget
到HOSTNAME
尝试去到与刚刚更新的不同的IP。
结果发现;www.";。当我解析host
时,我不使用www,而当我使用wget
时,我使用www,因此他们解析为该特定站点的不同IP。