29 ip查询工具 并发送邮件通知目标用户

前言

这个 大概是 2020 年的事情了

呵呵 当时 我们通过 内网穿透 将局域网的服务暴露到了 互联网上

但是 存在的问题是 每隔一段时间 局域网对应的互联网 ip 就回变化

然后 如果是 在周末, 我们就很难感知到 这种变化, 并且 变化了之后 我们没有解决的方式

因此 当时产生的想法 就是定时 去查询 互联网ip, 如果 发生变化了 就基于邮件通知到 各个需要关注的目标用户

脚本内容 本身也比较简单, 这里不过多 描述

queryIpThenNotify.sh

主题框架脚本如下

查询当前网络的互联网 ip, 如果为空 或者 没有变化 记录日志之后 返回

否则 循环目标用户, 发送邮件

复制代码
# refresh env in cron shell 
source /etc/profile

appHome=$BEST_BASE/ip-query
cd $appHome
echo " current working directory : `pwd`  " >> curlLog.txt 2>&1

rm -rf ipInfo.txt

date >> curlLog.txt
./queryIp.sh >> curlLog.txt 2>&1 

# if `ip` changed 
LAST_IP=`cat ipHistory.txt | tail -n 1`
NOW_IP=`cat ipInfo.txt | tail -n 1`
if [ -z "$NOW_IP" ]; then
    echo " ip queried is empty" >> curlLog.txt 2>&1
    exit 0
fi

if [ "$LAST_IP" == "$NOW_IP" ]; then
    echo " ip is stable " >> curlLog.txt 2>&1
    exit 0 
fi
echo $NOW_IP >> ipHistory.txt

# send email to watcher 
sender="hex@yocoyt.com"
subject="ip查询结果"
toUsers=('hex@yocoyt.com' 'baifl@yocoyt.com' 'baifl198@sina.com')
for toUser in ${toUsers[@]}; do
    mailTxt="mail-$toUser.txt"
    rm -rf $mailTxt
    echo "From: $sender " >> $mailTxt
    echo "To: $toUser " >> $mailTxt
    echo "Subject: $subject " >> $mailTxt
    echo "" >> $mailTxt
    cat ipInfo.txt >> $mailTxt

    ./sendEmail.sh $sender $toUser $mailTxt >> curlLog.txt 2>&1
#    echo " sendEmail $sender -> $toUser "
done

echo "--------------------------------" >> curlLog.txt

queryIp.sh

这个查询当前网络的 互联网ip 的服务

复制代码
# curl https://ip.cn/ -H 'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.134Safari/537.36' -o ipInfo.txt

curl http://members.3322.org/dyndns/getip -o ipInfo.txt

# for debug
# echo "127.0.0.1" >> ipInfo.txt

sendEmail.sh

这个是发送邮件的具体实现

复制代码
echo "params : $*"
sender=$1
toUser=$2
mailTxt=$3
smtpServer=smtp://smtp.exmail.qq.com

senderUsername=hex@best.com
senderPassword=JerryHe123456

curl --verbose -s --url $smtpServer --mail-from $sender --mail-rcpt $toUser --upload-file $mailTxt --user "$senderUsername:$senderPassword"

使用日志

附上使用时的日志

相关推荐
gihigo19982 天前
基于TCP协议实现视频采集与通信
网络协议·tcp/ip·音视频
龙仔7252 天前
在麒麟V10服务器安全加固,sshd防暴力破解加固,实现“密码错误3次封IP”的需求
服务器·tcp/ip·安全
凯酱3 天前
Windows防火墙入站规则IP白名单
windows·网络协议·tcp/ip
上海云盾王帅3 天前
从底层守护:深度解析四层协议(TCP/UDP)的DDoS防护之道
tcp/ip·udp·ddos
IP搭子来一个3 天前
独享IP和共享IP怎么选?全面对比解析
运维·网络·tcp/ip
科技块儿3 天前
如何用离线库秒筛“数据中心”IP段并自动封号?
网络·网络协议·tcp/ip
上海云盾第一敬业销售3 天前
选择最佳高防CDN与高防IP服务以保证网站安全
网络协议·tcp/ip·安全
傻啦嘿哟3 天前
免费代理IP获取与验证:实战爬取代理网站并筛选可用IP
网络·网络协议·tcp/ip
上海云盾-小余3 天前
高防IP与传统防护的互补性分析
网络·网络协议·tcp/ip
科技块儿3 天前
开发者需要为网站或应用集成IP归属地显示功能,如何选择可靠的数据源?
服务器·网络·数据库·tcp/ip·edge·ip