当我不在家时,我会使用旧的 iPhone 进行远程控制。问题是我的服务提供商为我提供了动态 IP 地址,因此有时它会自行更改。我如何才能“免费”地知道我家在外出时的实际 IP 地址?
编辑:
我连接从我工作中的 PC 或 Android 设备到家里的 iPhone 3gs通过VNC 服务器。
我不想要在家里留一台 PC 以使用动态 DNS。
我不想要为 dydns 支付每年 30 美元。
我可以连接我的 iPhone。这不是重点。但是当我的 IP 改变时,我就会失去连接。
答案1
在我获得静态 IP 之前,我多年前使用的方法如下。
首先,找到一个可以调用来获取 IP 地址的服务。例如,现在如果你在 Google 上搜索“我的 IP 是什么”,例如:
https://www.google.co.uk/search?q=whats+my+IP
您将获得如下所示的搜索页面:
不幸的是,Google 的代码有点密集,但如果你使用 shell 脚本和 Wget,可能还会使用一些 grep 调用,或者甚至是用 PHP 编写的自定义脚本来抓取 Google 的页面并解析结果,你会发现,只要稍加努力,就可以从页面中获取 IP 地址。
当然,您不必使用 Google 来获取 IP,还有许多其他页面专门用于获取您的 IP,例如“www.whatsmyip.org”
最后,如果您可以访问外部 Web 服务器,您甚至可以在那里放置一个脚本,该脚本只需以纯文本形式回显远程主机地址服务器变量即可。
最终结果是您获得一个 IP 地址,您使用哪种服务并不重要,重要的是您自动调用从外部世界查看您的 IP 的主机,然后从返回给您的输出中解析出该 IP 地址。
一旦您获得该 IP,您就可以自动化您的机器,将该 IP 地址通过电子邮件发送到您和您的手机可以访问的公共电子邮件帐户(例如 GMail)。
将脚本放入某种定时作业中,每 30 分钟左右检查一次,并记录最后发出的 IP 地址,并且只有在 IP 地址发生变化时才向您发送电子邮件。
然后,当您想要 IP 地址时,只需登录指定的公共电子邮件并查看 IP 是什么。
更新
经过一番研究。即查看 whats myip 页面中的源代码。我被引导去查看:
http://www.realip.info/api/p/realip.php
如果你将其放入浏览器中并按回车键,你将获得以下内容:
{"IP":"80.176.150.196"}
您的 IP 地址为 JSON 对象。JSON 对象太容易解析了 :-)
更新2
好的,既然我们现在知道手机也被连接了,我们实际上可以让它工作了。
但是,在我继续之前,您的手机必须连接到您自己的网络。这不适用于 GSM/3g/4g 或任何其他移动电话运营商网络。
实现此目标的步骤
创建一个标准的 html 网页,向该网页添加 JQuery,并进行设置,以便 HTML 代码使用 meta-refresh 标记时常重新加载页面。
在上述网页中添加一些 java 脚本,调用我上面提到的“realip.info”。如果您使用 jQuery 和 Ajax get 调用执行此代码,那么在调用返回时触发的函数中,您将使用名为“IP”的对象获取数据
在相同的 JavaScript 中,将该 IP 地址发送到您可以读取它的地方。我不确定是否有任何可以通过 java 脚本访问的电子邮件解决方案,但正如前面提到的,如果您有自己的外部服务器,该服务器运行您可以访问的网站,您可以非常轻松地使用 jQuery 将其发布到那里。
将此 html 页面保存到您的 SD 卡或以其他方式将其传输到您的手机上,然后像在远程控制之前通常那样连接您的手机。
将 HTML 加载到您的手机浏览器中,并允许它停留在那里,自我刷新,调用 IP 服务,然后将 IP 发送到您要求的任何地方。
要做到这一点,你不需要一台 Mac 来为你的 iPhone 开发任何软件,你所需要的只是一点 HTML 和 JavaScript,该解决方案也非常便携,可以适用于任何手机。
我可能可以很容易地编写一个脚本来完成这个任务,但是现在不行,因为我不在自己的电脑旁,不过我以后可能会尝试一下 :-)
更新 3
事实证明,使用普通的旧 JavaScript 和 GData API 发送电子邮件非常容易,详细信息如下:
https://developers.google.com/gmail/api/v1/reference/users/messages/send
答案2
参考免费动态 DNS
No-IP 免费动态 DNS 是我们的入门级服务。使用 yourname.no-ip.info 而不是难以记住的 IP 地址或 URL 来远程访问您的计算机。此外,使用我们的免费动态 DNS 更新客户端来跟踪您的动态 IP 地址。即使您的 IP 地址是动态分配的,您也始终能够访问您的计算机。