Linux在启动时发送URL我的IP地址

时间:2013-12-03 23:41:02

标签: linux bash terminal

所以,我正在尝试编写一个简单的bash脚本,以便在启动时将我的内部IP地址发送到我的网站。我在使用DHCP的网络上,所以在通过ssh重新启动后,我并不总是知道我的Raspberry Pi的IP地址是什么。我想我可以通过在启动时向我的网站发送当前的IP来解决这个问题。我没有写过很多bash脚本,我不确定如何将数据发送到我的网站。现在我只是在终端尝试这个:

wget -qO- http://http://mywebsite.com/private/CurrentIP.php?send=$(/sbin/ifconfig eth0|grep 'inet addr:')

但我没有运气。我实际上并不太了解linux,我正在努力学习。这就是为什么我实际上得到了覆盆子pi。无论如何,有人能指引我朝正确的方向前进吗?

我已经知道我需要把它放在/etc/init.d/中。

3 个答案:

答案 0 :(得分:2)

你可以这样做:

IP_ADDR=$(ifconfig eth0 | sed -rn 's/^.*inet addr:(([0-9]+\.){3}[0-9]+).*$/\1/p')
wget -q -O /dev/null http://mywebsite.com/private/CurrentIP.php?send=${IP_ADDR}

...但如果您的计算机卡在NAT后面,$IP_ADDR将不是您外部可见的地址。可能希望在PHP中使用$_SERVER['REMOTE_ADDR']而不是/除此之外,以获取服务器看到的客户端的地址。


编辑:听起来您希望在重新启动后能够在本地(DHCP管理的)网络上找到您的Raspberry Pi。您是否考虑过使用多播DNS?

在实践中如何运作:假设您已将RasPi的主机名设置为gooseberry。如果您在该计算机上启用了多播DNS服务器,则可以发送多播DNS查询的同一网段上的其他计算机将能够在域名gooseberry.local中找到它。这是一种点对点协议,不依赖于gooseberry通过DHCP接收任何特定地址 - 因此,如果它重新启动并接收新地址,其他机器仍应能够找到它。

Mac OS X开箱即用;这可以在大多数Linux发行版上启用(在Debian / Ubuntu上安装avahi-daemonlibnss-mdns包);不确定Windows,但快速谷歌显示出令人鼓舞的结果。

答案 1 :(得分:0)

这对我有用(wget部分未经测试,但它找到了IP地址):

interface="eth0"
ip_addr=$(ifconfig ${interface} | sed -rn 's/^.*inet *([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}).*$/\1/p')
wget -q -O /dev/null http://mywebsite.com/private/CurrentIP.php?send=${ip_addr}

答案 2 :(得分:0)

你不能用:

主机名--ip-address