获取公网地址并邮件之

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
brace
帖子: 243
注册时间: 2008-10-11 22:49
来自: null

获取公网地址并邮件之

#1

帖子 brace » 2015-09-14 21:48

应用场景:家里的宽带IP一般都是动态,想在外面连接家里服务器,需要实时获取动态的IP,并邮件发送至邮箱,以便随时通过ssh可以连接家中电脑
脚本

代码: 全选

#!/bin/bash
#Look for WAN's IP and mailto joinrain@joinrain.cn
#Last edit:2015.9.14
#---------------------------------------------------
WAN_IP_OLD=""
WAN_IP=""
MAIL_ADDR="abc@test.com"
IP_CACHE_FILE="/home/joinrain/tmp/ip_chache"
#---------------------------------------------------
touch ${IP_CACHE_FILE}
WAN_IP_OLD=`grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' ${IP_CACHE_FILE}`

#look for wan's ip
WAN_IP=`curl -s http://www.123cha.com|grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'|uniq`
#compare with
if [ "${WAN_IP_OLD}"x != "${WAN_IP}"x ];then
        echo ${WAN_IP}>${IP_CACHE_FILE}
        echo `date  +'%Y-%m-%d %H:%M:%S'` >> ${IP_CACHE_FILE}
        mail -s "PC's IP infomation" ${MAIL_ADDR} <${IP_CACHE_FILE}
fi
exit 0
邮件通过exim4发送,需要注意的是,需要使用smarthost方式,否则家用IP在黑名单里,发送的邮件会被服务器拒绝,smarthost配置过程中可能会遇到发送超时等问题,可能由于smtp邮件服务器解析后的地址和实际地址不一致导致的,配置是根据host $YOUR_MAIL_SERVER的结果更改。

部署好了之后,加个crontab就可以了。
求轻拍。
上帝也是单亲家长
lonhu
帖子: 1
注册时间: 2010-08-12 16:50

Re: 获取公网地址并邮件之

#2

帖子 lonhu » 2015-10-05 0:09

哇塞,好东西,外行小白,求引用到WIN里面的方法
l10x
帖子: 447
注册时间: 2008-06-23 19:31
系统: debian+fedora+win10

Re: 获取公网地址并邮件之

#3

帖子 l10x » 2015-10-05 16:41

:Cool 不明觉厉
头像
brace
帖子: 243
注册时间: 2008-10-11 22:49
来自: null

Re: 获取公网地址并邮件之

#4

帖子 brace » 2016-03-01 16:23

lonhu 写了:哇塞,好东西,外行小白,求引用到WIN里面的方法
啊,win的话,用python会好一点,不过没用win下的mail服务器,不知道用什么软件。。。
上帝也是单亲家长
头像
vickycq
帖子: 4507
注册时间: 2011-03-20 13:12
系统: Debian
来自: 山东省寿光县
联系:

Re: 获取公网地址并邮件之

#5

帖子 vickycq » 2016-03-01 16:32

运行一个 irc 客户端即可。
Debian 中文论坛 - forums.debiancn.org
欢迎所有 Debian GNU/Linux 用户
头像
ak2008
帖子: 262
注册时间: 2009-03-06 10:52
系统: ubuntu-12.04

Re: 获取公网地址并邮件之

#6

帖子 ak2008 » 2016-03-02 11:31

马洛卡
头像
lilydjwg
论坛版主
帖子: 4249
注册时间: 2009-04-11 23:46
系统: Arch Linux
联系:

Re: 获取公网地址并邮件之

#7

帖子 lilydjwg » 2016-03-07 21:19

我的方案是调用 CloudFlare 的 API 更新域名~

Python 脚本,不需要写文件,通过对比 DNS 查询结果和网卡地址来决定是否更新 DNS 记录。
脚本地址: https://gist.github.com/lilydjwg/68827d778da4bc8aeb63
回复