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"

使用日志

附上使用时的日志

相关推荐
山风wind3 分钟前
网络分层模型:OSI和TCP/IP参考模型
服务器·网络·tcp/ip
Spider赵毅8 分钟前
python实战 | 如何使用海外代理IP抓取Amazon黑五数据
python·tcp/ip·php
Bruce_Liuxiaowei2 小时前
全面TCP端口扫描:Nmap高级扫描技术与实战应用
网络·tcp/ip·网络安全·php
2501_915918413 小时前
TCP 抓包分析在复杂网络问题中的作用,从连接和数据流层面理解系统异常行为
网络·网络协议·tcp/ip·ios·小程序·uni-app·iphone
while(1){yan}4 小时前
基础IP协议知识
网络·网络协议·tcp/ip
车载测试工程师4 小时前
CAPL学习-AVB交互层-功能函数-控制类函数
学习·tcp/ip·以太网·capl·canoe
一只小鱼儿吖5 小时前
实时监测代理IP池质量并生成可视化报告的实战(以携趣代理API为例)
网络·网络协议·tcp/ip
福尔摩斯张5 小时前
TCP/IP网络编程深度解析:从Socket基础到高性能服务器构建(超详细)
linux·运维·服务器·开发语言·网络·网络协议·tcp/ip
Sleepy MargulisItG5 小时前
【Linux网络编程】传输层协议:TCP
linux·网络·tcp/ip
那我掉的头发算什么6 小时前
【javaEE】UDP与TCP核心原理深度解析:从“不可靠”到“稳如老狗”的进化之路
网络协议·tcp/ip·udp·java-ee·传输层协议