第三章 Linux系统下IP变更发送邮件
3.1 脚本编写与配置
3.1.1 脚本编写
vi /usr/local/IpChangeSendEmail.sh
脚本内容
#!/bin/bash
cd /usr/local
touch ip.txt
touch sentEmailIpChange.log
touch newip.txt
ip a show dev wlan0 | grep -w inet| awk '{print $2}'| awk -F '/' '{print $1}' > newip.txt
IPADDRESS=$(cat newip.txt)
OLDIP=$(cat ip.txt)
echo "$IPADDRESS"
echo "$OLDIP"
if [ "$IPADDRESS" = "$OLDIP" ]
then
echo "$(date -u "+%Y-%m-%d %H:%M" -d "8 hour") not changed"
else
echo "$IPADDRESS" > ip.txt
echo "服务器IP是 $IPADDRESS"| mail -s "服务器IP地址变化" sendemail@163.com
echo "Send email successfully!"
fi
3.1.2 mail配置
vi /etc/mail.rc
末尾添加或修改
set from=zhaohongtao1996@163.com smtp="smtp.163.com"
set smtp-auth-user="youremail@163.com" smtp-auth-password="授权码"
set smtp-auth=login
3.1.3 crontab配置
vi /usr/local/cront_IP.cron
填入如下脚本
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
0 * * * * /usr/local/IpChangeSendEmail.sh >> /usr/local/sentEmailIpChange.log 2>&1
第四行0 * * * * /usr/local/IpChangeSendEmail.sh >> /usr/local/sentEmailIpChange.log 2>&1
0为第0分钟 第一个*是小时 第二个是日 第三个是月 第四个年 ,实现效果是每小时的第0分钟执行一次脚本并把log转写入sentEmailIpChange.log中。
测试中可以将第四行修改成
0 * * * * * /usr/local/IpChangeSendEmail.sh >> /usr/local/sentEmailIpChange.log 2>&1
实际上是每分钟的0秒执行一次,方便调试
实验结果