我在我父母家里有一台服务器,最近经常停电,当我们的路由器重新上线时,它会更改其公共/全局 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
使用我的脚本。
- 从我的 github repo 克隆脚本:
git clone https://github.com/el-beth/sendExternalIPAddress.git
- 然后将
sendexternalip.bash
文件从目录移动sendExternalIPAddress
到/usr/lib
- 使用以下命令执行此操作。
sudo cp sendExternalIPAddress/sendexternalip.bash /usr/lib
- 现在使脚本可执行:
sudo chmod +x /usr/lib/sendexternalip.bash
首次安装所有必需的包和依赖项:
sudo /usr/lib/sendexternalip.bash
现在要使脚本在启动时自动运行,请运行以下命令:
sudo printf "start on startup\ntask\nexec /us/lib/sendexternalip.bash\n" > ~/.config/upstart/sendexternalip.conf
这将使您的 Linux 机器将其当前的外部 IP 地址通过电子邮件发送到脚本中指定的电子邮件地址。
注意:脚本默认将外部 IP 地址发送到电子邮件地址“[电子邮件保护]“但是,您可以将customReceiverEmail
脚本第 9 行的变量更改为@grr.la
您选择的任何地址,然后 IP 地址将被发送到该地址。