ubuntu定时检测IP变化并发送邮件查看IP

实验室新配了服务器,之前的服务器设置了IP变化时(一般为电脑重启时)自动发送IP至指定邮箱,但没有记录方法,此次重新配置记录一下


1、安装ssmtp服务

sudo apt-get install ssmtp mailutils

发送邮件需要有mailutils基础库,ssmtp库可以进一步选择发送人,收件人,邮件主题,邮件内容等。

2、开通邮箱smtp服务

需要开通发件人邮箱的smtp服务,无论是qq邮箱还是163邮箱等都可以直接开通,我选择的是qq邮箱,具体步骤可以参考:https://jingyan.baidu.com/article/6079ad0eb14aaa28fe86db5a.html
开通后即可获得邮箱账号的smtp的授权码,为一串英文乱码。

3、配置ssmtp

3.1、设置ubuntu发件人信息

首先更改文件/etc/ssmtp/ssmtp.conf,编辑器选择自己常用的,我用的是vim

sudo vim /etc/ssmtp/ssmtp.conf

进入文件后默认显示如下:
请添加图片描述
修改其中未注释信息如下:
在这里插入图片描述
即mailhub修改为qq邮箱的smtp服务器和端口,smtp.qq.com:465,如果发件人使用的是163邮箱,则163邮箱的服务器和端口自行百度,可能是smtp.163.com:465

hostname保持不变;

接着输入:

UseTLS=Yes
root=*********@qq.com
AuthUser=*********
AuthPass=******************

root后的邮箱为发件人邮箱,AuthUser后为发件人账号,即邮箱去掉后缀(例如@qq.com),AuthPass后为之前申请所得的smtp授权码。

保存退出(:wq)

3.2、配置ssmtp用户使用权限

即配置允许哪个ubuntu用户可以使用发件人邮箱发送邮件。

更改文件/etc/ssmtp/revaliases:

sudo vim /etc/ssmtp/revaliases

打开默认为:
在这里插入图片描述
在下方添加如下:

root:*********@qq.com:smtp.qq.com:465
lab532:*********@qq.com:smtp.qq.com:465

在这里插入图片描述
即格式为:用户:邮箱:smtp.qq.com:465,163邮箱更改对应位置即可。

这样配置即允许root用户和指定用户(如我的为lab532)使用ssmtp服务发送邮件。

ssmtp配置完成。

3.3、简单测试

echo "hello world" | mail -s "title" *********@163.com

输入上述命令,后面邮箱为收件人邮箱,可以任意指定,收到邮件,测试成功。

4、crontab命令定时循环执行检测脚本发送邮件

4.1、检测IP脚本

脚本作用:运行脚本时会获取当前IP地址,并与之前保存的IP地址进行比较,如相同,则结束脚本,如不同,则将新的IP保存下来并发送邮箱给指定收件人。

在/home/lab532/auto_scripts/目录下添加getip.sh脚本,目录和脚本名字可自己指定,我的是上述情况:

#!/bin/bash
MYIP=`ifconfig ppp0 | grep 'inet '| awk '{print $2}' | cut -d ':' -f 2`
TIME=`env LC_TIME=en_US.UTF-8 date`

LASTIPFILE='/home/lab532/auto_scripts/.last_ip_addr'
LASTIP=`cat ${LASTIPFILE}`

EmailFile='/home/lab532/auto_scripts/emai_info.txt'

if [[ ${MYIP} != ${LASTIP} ]]; then
	echo -e "To: *********@qq.com\nFrom: *********@qq.com\nSubject: Lab532 New IP\n\nHello!\n\nCurrent Time:${TIME}\nNew IP:${MYIP}" > ${EmailFile};
	/usr/sbin/ssmtp *********@qq.com < ${EmailFile};
	
	echo ${MYIP} > ${LASTIPFILE};

fi

ifconfig命令找不到,则:

sudo apt install net-tools

脚本中获取IP命令,ubuntu20.04中使用如上,如果使用ubuntu16.04则修改如下:

ifconfig ppp0 | grep 'inet addr'| awk '{print $2}' | cut -d ':' -f 2

其中的ppp0为拨号端口,如果这里不同则也需要更改这里
在这里插入图片描述
脚本中的To后面的邮箱是收件人邮箱,课任意指定,From后面的邮箱和ssmtp后面的邮箱是发件人邮箱,需要和前面有授权码的发件人邮箱保持一致,subject的为邮件主题,可自己更改,后面的为内容可自己更改,但需要保留${MYIP}变量,发送多个邮件在后面echo ${MYIP} > ${LASTIPFILE};命令前多复制几次发送命令即可,即:

	echo -e "To: *********@qq.com\nFrom: *********@qq.com\nSubject: Lab532 New IP\n\nHello!\n\nCurrent Time:${TIME}\nNew IP:${MYIP}" > ${EmailFile};
	/usr/sbin/ssmtp *********@qq.com < ${EmailFile};

	echo -e "To: *********@163.com\nFrom: *********@qq.com\nSubject: Lab532 New IP\n\nHello!\n\nCurrent Time:${TIME}\nNew IP:${MYIP}" > ${EmailFile};
	/usr/sbin/ssmtp *********@163.com < ${EmailFile};

等等。

4.2、crontab定时循环执行脚本

在之前配置的用户权限中允许的用户下,输入如下命令:

crontab -e

添加如下命令:
在这里插入图片描述

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

*/2 * * * * /bin/bash /home/lab532/auto_scripts/getip.sh

即可设置为每两分钟执行一次getip.sh脚本,关于crontab的用法可自行百度。

配置完成,等待指定邮箱发送指定内容。

  • 6
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值