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"

使用日志

附上使用时的日志

完

相关推荐
隐擎fox19 分钟前
深入网络风控底层:解密 IP 信誉评分模型、ASN 属性判定与多租户原生网络隔离架构
网络·爬虫·网络协议·tcp/ip·架构·跨境电商·指纹浏览器
Zooproxy全球IP代理4 小时前
海外代理IP纯净度评估:指标、检测与调度实践
网络协议·tcp/ip·php
YumiProxy10 小时前
代理IP自动切换避坑指南:会话保持、请求头与错误处理实战
网络·网络协议·tcp/ip·代理模式·ip
盛世宏博智慧档案10 小时前
Modbus TCP+PoE以太网温湿度传感器项目部署全流程,附网络调试实操
开发语言·tcp/ip·php·以太网·传感器·温湿度
天启HTTP20 小时前
爬虫防封核心原理:IP轮换机制与风控规避逻辑
linux·服务器·网络·爬虫·tcp/ip
深圳恒讯1 天前
海外服务器延迟高怎么解决?从线路到TCP协议的6层排查清单
运维·服务器·tcp/ip
盛世宏博北京1 天前
工业环境稳定采集:配电室 IP 温湿度变送器 TCP/UDP 通信部署指南
单片机·tcp/ip·udp
smile0021 天前
Modbus RTU/TCP通信测试怎么做?从协议要点到自动化回归的完整实践
tcp/ip·回归·自动化
马六六i1 天前
市面上专业的IP驱动产业新场景新工具哪家好
网络·人工智能·python·tcp/ip
一只旭宝1 天前
【网络精讲1】TCP 三次握手:为什么是三次,第三次丢了怎么办
服务器·网络·tcp/ip