开机自动发送IP地址

试验环境: Ubuntu 20.04.3 LTS

背景

有时候一台远程主机启用的是DHCP,IP地址可能会在重启以后变化。如果是在同一个局域网,还可以通过局域网mac扫描工具扫描出mac地址对应的IP地址,在远程则做不到。这时候如果有个自启动任务将本机IP地址发送出来就解决这个问题了。

获取本机IP地址的办法:

ip r

输出类似如下:

default via x.x.x.y dev INAME proto dhcp src x.x.x.z metric 100 
x.x.x.k/n dev INAME proto kernel scope link src x.x.x.z 
x.x.x.y dev INAME proto dhcp scope link src x.x.x.z metric 100

结合grep和awk解析IP地址:

ipaddress=`ip r | grep default | awk '{print $9}'`

发送IP地址

常用的一种做法是通过电子邮件发送IP地址,不过要配置smtp服务器等比较麻烦;你也可以往MQ上发一个消息,不过得配置消息服务器和使用消息客户端。我这里用一个更简单的办法,就是发送一个http请求,前提是你手头上正好有一个web服务器。首先在web服务器跟目录创建一个 ping-ip.txt文件,随便写个什么内容进去,例如"pong"。将上一步解析到的ipaddress作为url参数请求:

curl "http://your-webserver.com/ping-ip.txt?ip=$ipaddress"

这样再去web服务器查看访问日志就可以看到IP地址了:

cat /var/log/apache2/access.log | grep ping-ip

开机启动任务

可以按照systemd服务规范自己写一个service,或者使用传统的rc.local方式。
Ubuntu 20.04并没有默认启动rc-local.service, 参考这篇文章启动传统兼容的rc.local。编辑/etc/rc.local文件内容如下:

#!/bin/bash
ipaddress=`ip r | grep default | awk '{print $9}'`
echo "IP is $ipaddress"
curl "http://your-webserver.com/ping-ip.txt?ip=$ipaddress"
exit 0

延展

这种方式再扩展一下,你可以传送更多参数;web服务器端接收程序如果改成动态脚本,还可以将IP地址记录到数据库或者其他持久存储中。

你可能感兴趣的:(开机自动发送IP地址)