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"

使用日志

附上使用时的日志

相关推荐
(Charon)1 天前
【C++/Qt】Qt 封装 TCP 客户端底层 Network 类:连接、收发、自动测试与错误处理
服务器·网络·qt·tcp/ip
TechWayfarer1 天前
IP归属地运营商能解决什么问题?风控/增长/数据平台落地实践(附API代码)
开发语言·网络·python·网络协议·tcp/ip
TechWayfarer1 天前
IP归属地运营商生产落地进阶:缓存+降级+灰度对账全解析
网络·python·网络协议·tcp/ip·缓存
funnycoffee1231 天前
华为USG防火墙修改tcp aging time , default is 1200S
网络·网络协议·tcp/ip·usg aging time
treesforest1 天前
IP查询接口调用完全指南:从入门到企业级实战
大数据·网络·安全·网络安全·ip
IpdataCloud1 天前
远程办公网络安全中,IP查询工具如何保障数据安全?适用场景与落地指南
tcp/ip·web安全·php
半壶清水1 天前
ubuntu中部署开源交换机模拟器bmv2详细步骤
linux·运维·网络·网络协议·tcp/ip·ubuntu
(Charon)1 天前
【C++/Qt】Qt 实现 TCP Client:从功能构思到消息收发与日志保存
qt·网络协议·tcp/ip
想成为优秀工程师的爸爸1 天前
第二十四篇技术笔记:郭大侠学DoIP - 从“偶睡破庙”到“天字一号”
网络·笔记·网络协议·tcp/ip·信息与通信
wefg11 天前
【计算机网络】传输层协议(UDP/TCP)
tcp/ip·计算机网络·udp