前期配置
这里引用了站内用户dreamer5z的文章,首先感谢他的文章的帮助,节省了我工作量。
我们按照其文中1、到3.3、的内容进行配置即可。
补充的一点是要在/etc/ssmtp/ssmtp.conf中取消注释如下行:
FromLineOverride=YES
创建检测脚本
在合适的位置创建脚本
vi /home/用户名/脚本存放路径/getip.sh
内容如下:
#!/bin/bash
TIME=`env LC_TIME=en_US.UTF-8 date`
LASTIPFILE='/home/用户名/脚本存放路径/.last_ip_addr'
EmailFile='/home/用户名/脚本存放路径/email_info.txt'
LASTIP=`cat ${LASTIPFILE}`
MYIP=""
while [ -z "$MYIP" ]; do
MYIP=$(ip -4 address show dev 你的网卡设备名| awk '/inet / {print $2}' | cut -d'/' -f1)
if [ -z "$MYIP" ]; then
sleep 1
fi
done
if [[ ${MYIP} != ${LASTIP} ]]; then
echo -e "To: xxx@qq.com\nFrom: 邮件显示的发件人 <xxx@163.com>\nSubject: MyServer has updated to new intranet IP.\n\nHello! \n\nNew IP of MyServer:${MYIP} \nCurrent Time:${TIME} \n\nHave a good day!" > ${EmailFile};
/usr/sbin/ssmtp xxx@qq.com < ${EmailFile};
if [ $? -eq 0 ]; then
echo "sSMTP command executed successfully."
echo ${MYIP} > ${LASTIPFILE};
else
echo "sSMTP command failed."
exit 1
fi
fi
注意将用户名、脚本路径、网卡设备名(dreamer5z的文章讲到了如何获取)、邮箱、发件人替换成自己的。
运行:
chmod +x /home/用户名/脚本存放路径/getip.sh
创建开机自启服务
创建服务单元文件
sudo vi /etc/systemd/system/getipwhenstart.service
将以下内容复制粘贴到文件中:
[Unit]
Description=Retrieve IP address and send email notification if it changes
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
User=用户名
Group=用户名
ExecStart=/home/用户名/脚本存放路径/getip.sh
Restart=on-failure
RestartSec=3s
[Install]
WantedBy=multi-user.target
注意将用户名和getip.sh路径替换成自己的
刷新并启用服务
sudo systemctl deamon-reload
sudo systemctl enable getipwhenstart.service