我在我爸爸家有一个树莓派,用作“蜂房”(加热/水控制)。
我父亲有一个由他的ISP提供的dynamicIP,当它改变Pi更新我的服务器上的文本文件(通过SSH)。 然后,我使用SSH进入SSH,并通过我的域“/ cleres”上的URL访问networking用户界面。
目前我有一个丑陋的bash脚本,将除了最后一行(他的ip)以外的所有主机文件复制到临时文件,从文本文件获取新的IP,并更新主机文件附加
XXX.XXX.XXX.XXX dad
我觉得这不是最好的办法做到这一点,然而每一个关于dynamic主机文件更新的文章(我发现)似乎都是用自己的本地DHCP地址更新的。 我不想使用dyndns或noip,因为它是不必要的。 我已经有了IP,我只需要在我的服务器上使用别名的方法。
TLDR我想知道是否有一个更好的方式来更新我的主机文件,而不是复制整个东西,并附加一个新的IP&主机。
如果有人感兴趣,我的域名在这里 。
— UGLY BASH SCRIPT —
ip="$(cat /media/dad/dadextip.txt)" check="$(cat /etc/hosts | grep $ip | sed -e 's/\< Dad\>//g')" if [[ $check != *[^0-9]* ]]; then cat /etc/hosts | grep -v Dad > /tmp/tmphosts cat /tmp/tmphosts > /etc/hosts echo "$ip Dad" >> /etc/hosts cat /tmp/tmphosts > /var/spool/postfix/etc/hosts echo "$ip Dad" >> /var/spool/postfix/etc/hosts cat /etc/webmin/servers/1448542326.serv | grep -v host > /tmp/tmphosts cat /tmp/tmphosts > /etc/webmin/servers/1448542325.serv echo "host=$ip" >> /etc/webmin/servers/1448542326.serv exit 0 elif [ $check != $ip ]; then cat /etc/hosts | grep -v Dad > /tmp/tmphosts cat /tmp/tmphosts > /etc/hosts echo "$ip Dad" >> /etc/hosts cat /tmp/tmphosts > /var/spool/postfix/etc/hosts echo "$ip Dad" >> /var/spool/postfix/etc/hosts cat /etc/webmin/servers/1448542326.serv | grep -v host > /tmp/tmphosts cat /tmp/tmphosts > /etc/webmin/servers/1448542326.serv exit 0 else exit 0 fi
GNU sed
可以进行文件内置换( sed -i "s/<regex>/replacement/" /etc/hosts
)。 很明显,你会想先测试正则表达式替换部分没有 -i
选项,直到它工作…