我有一个树莓派在我父亲家里,用作“Hive”(供暖/水控制)。
当他的ISP提供的动态IP更改时,树莓派通过SSH更新我的服务器上的文本文件。然后我使用此文件进行SSH连接,他使用此文件通过我的域名"/cleres"访问Web UI。
目前,我有一个丑陋的bash脚本,它复制我的整个hosts文件,除了最后一行(他的IP)到一个临时文件中,从文本文件获取新的IP,并将其附加到hosts文件中。
我觉得这不是最好的方法,但是我找到的每篇关于动态主机文件更新的帖子似乎都是人们用自己的本地DHCP地址进行更新。我不想使用dyndns或noip,因为这是不必要的。我已经有了IP,我只需要在我的服务器上为它设置别名。
简而言之,我想知道是否有比复制整个文件并追加新的IP和主机更好的更新主机文件的方法。
如果有人感兴趣,我的域名是here。
---丑陋的Bash脚本---
目前,我有一个丑陋的bash脚本,它复制我的整个hosts文件,除了最后一行(他的IP)到一个临时文件中,从文本文件获取新的IP,并将其附加到hosts文件中。
XXX.XXX.XXX.XXX dad
我觉得这不是最好的方法,但是我找到的每篇关于动态主机文件更新的帖子似乎都是人们用自己的本地DHCP地址进行更新。我不想使用dyndns或noip,因为这是不必要的。我已经有了IP,我只需要在我的服务器上为它设置别名。
简而言之,我想知道是否有比复制整个文件并追加新的IP和主机更好的更新主机文件的方法。
如果有人感兴趣,我的域名是here。
---丑陋的Bash脚本---
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