重启时发送公共/全局 IP 的脚本

重启时发送公共/全局 IP 的脚本

我在我父母家里有一台服务器,最近经常停电,当我们的路由器重新上线时,它会更改其公共/全局 IP 地址,这使我无法连接到它(SSH,FTP,HTTP),有没有什么办法可以编写一个脚本,当我的服务器断电并重新启动时,它会向我发送一封包含我的全局/公共 IP 的电子邮件。

答案1

您可以尝试使用 sendmail。安装

sudo apt install -y postfix

选择internet side并输入服务器的主机名

编写脚本,例如sudo nano /usr/local/bin/sendIPmail

#!/bin/bash

# 1. gets the primary IP
#from https://stackoverflow.com/a/25851186/7111561
IP=$( ip route get 1 | awk '{print $NF;exit}' )


# 2. send it using sendmail
#from https://stackoverflow.com/a/13390926/7111561

#--- adjust those ---
recipients="your.mail@address,[email protected]"
subject="some subject"
from="[email protected]"
#--------------------

/usr/sbin/sendmail "$recipients" <<EOF
subject:$subject
from:$from

New IP is $IP
EOF

exit 0

使其可执行

sudo chmod +x /usr/local/bin/sendIPmail

并在每次重启运行时调用它

sudo crontab -e

(选择你的编辑器,例如 2 代表 nano)添加以下行

@reboot /usr/local/bin/sendIPmail

这不需要任何外部网页或复杂的脚本/设置,并且只使用来自官方 Ubuntu 存储库的软件包。

注意:您确实应该考虑为服务器使用静态 IP 地址!

答案2

使用我的脚本。

  1. 从我的 github repo 克隆脚本:

git clone https://github.com/el-beth/sendExternalIPAddress.git

  1. 然后将sendexternalip.bash文件从目录移动sendExternalIPAddress/usr/lib- 使用以下命令执行此操作。

sudo cp sendExternalIPAddress/sendexternalip.bash /usr/lib

  1. 现在使脚本可执行:

sudo chmod +x /usr/lib/sendexternalip.bash

  1. 首次安装所有必需的包和依赖项: sudo /usr/lib/sendexternalip.bash

  2. 现在要使脚本在启动时自动运行,请运行以下命令:

sudo printf "start on startup\ntask\nexec /us/lib/sendexternalip.bash\n" > ~/.config/upstart/sendexternalip.conf

这将使您的 Linux 机器将其当前的外部 IP 地址通过电子邮件发送到脚本中指定的电子邮件地址。

注意:脚本默认将外部 IP 地址发送到电子邮件地址“[电子邮件保护]“但是,您可以将customReceiverEmail脚本第 9 行的变量更改为@grr.la您选择的任何地址,然后 IP 地址将被发送到该地址。

相关内容