我正在寻找一种方法让客户端的机器定期“打电话回家”,以便我可以在必要时轻松进行 ssh 登录。我正在考虑一个简单的脚本,它可以获取公共 IP 地址并将其发布到某个地方 - 例如 Twitter,或者可能是对我操作的 apache 服务器的 http 请求,或者每次更改时发送电子邮件。
是否有用于此目的的现有工具/脚本?我已经搜索过但没有找到
答案1
DD客户端
最简单的方法是使用DD客户端。我在我的服务器上使用它,并结合免费域名服务器,例如 dynu.com。
链接中有更多文档,但ddclient
会轮询客户端的动态 IP 地址。当它发生变化时,它会将新地址发送到 dynu.com(例如)。您将在 dynu.com 上拥有一个帐户,您可以在其中指定您的自定义域名。然后就可以直接连接了http://yourname.dynu.com,它会重定向到您客户端的 IP。
与使用数字 IP 地址相比,优点是您无需不断更新 ssh 配置,只需直接连接到域名即可。这在我的服务器上运行得很好。
数字IP
或者,如果您不想使用它,而是更愿意将数字 IP 发布到某处,这里是我曾经使用的旧脚本。它使用外部网页来查找您的本地 IP,这是唯一简单的方法。然后它会发送邮件[email protected]
,但您可以修改它以满足您的需要。您可以将其作为 cron 作业运行。
#!/usr/bin/env bash
CURRENTIP=$(curl -s http://myip.dnsomatic.com)
# Alternatively, use http://icanhazip.com
if echo $CURRENTIP | grep -qE '^([0-9]{1,3}\.){3}[0-9]{1,3}$' ; then
if ! cmp --quiet <(echo $CURRENTIP) /home/pi/.myipaddress ; then
echo "IP address changed to ${CURRENTIP}"
echo $CURRENTIP > /home/foo/.myipaddress
echo -e "Foo's IP address has changed to ${CURRENTIP} .\n" | mail -s 'Change of IP address' [email protected]
fi
else
echo "ERROR: IP address enquiry returns ${CURRENTIP}"
fi