惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Schneier on Security
博客园_首页
量子位
博客园 - 司徒正美
S
SegmentFault 最新的问题
J
Java Code Geeks
小众软件
小众软件
博客园 - 【当耐特】
The Register - Security
The Register - Security
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Microsoft Azure Blog
Microsoft Azure Blog
G
Google Developers Blog
Blog — PlanetScale
Blog — PlanetScale
T
Tailwind CSS Blog
博客园 - Franky
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
G
GRAHAM CLULEY
Cyberwarzone
Cyberwarzone
腾讯CDC
Apple Machine Learning Research
Apple Machine Learning Research
V
Visual Studio Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
The Hacker News
The Hacker News
aimingoo的专栏
aimingoo的专栏
V
Vulnerabilities – Threatpost
P
Palo Alto Networks Blog
Scott Helme
Scott Helme
L
LINUX DO - 热门话题
F
Full Disclosure
D
DataBreaches.Net
Martin Fowler
Martin Fowler
Cisco Talos Blog
Cisco Talos Blog
L
LINUX DO - 最新话题
云风的 BLOG
云风的 BLOG
C
Check Point Blog
T
Threatpost
Google DeepMind News
Google DeepMind News
WordPress大学
WordPress大学
W
WeLiveSecurity
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
有赞技术团队
有赞技术团队
Hugging Face - Blog
Hugging Face - Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
L
Lohrmann on Cybersecurity
Last Week in AI
Last Week in AI
T
Tor Project blog
T
Troy Hunt's Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
S
Security Affairs
SecWiki News
SecWiki News

青空之蓝

[青空之蓝-2023] - 色彩 | 青空之蓝 [青空之蓝-2022] - 平静 | 青空之蓝 [青空之蓝-2021] - 远望 | 青空之蓝 浅谈垃圾回收 | 青空之蓝 浅谈泛型擦除 | 青空之蓝 浅谈单点登录 | 青空之蓝 使用 Kotlin 编写 Spring 测试 | 青空之蓝 设计模式系列文章 | 青空之蓝 从零实现一个 Java 微框架 - IoC | 青空之蓝 从零实现一个 Java 微框架 - 前言 | 青空之蓝 浅谈 JVM:类加载 | 青空之蓝 浅谈 IO | 青空之蓝 浅谈并发:synchronized & ReentrantLock | 青空之蓝 浅谈并发:CAS & AQS | 青空之蓝 浅谈并发:ThreadLocal | 青空之蓝 浅谈并发:三大特性 | 青空之蓝 浅谈组合注解 & 注解别名 | 青空之蓝 [青空之蓝-2020]-迷茫 | 青空之蓝 Java 系列文章 | 青空之蓝 HTTP 系列文章 | 青空之蓝 浅谈 EatWhatYouKill | 青空之蓝 浅谈可扩展线程池 | 青空之蓝 聊聊写框架 | 青空之蓝 聊聊现状-[2020-09] | 青空之蓝 浅谈并发:锁 | 青空之蓝 浅谈并发:基础 | 青空之蓝 浅谈缓存 | 青空之蓝 无须定义类,Spring 快速注入 Json 参数 | 青空之蓝 浅谈 Proxy 和 Aop | 青空之蓝 从零实现一个 PHP 微框架 - 初始化请求 | 青空之蓝 为 Vue3 添加一个简单的 Store | 青空之蓝 从零实现一个 PHP 微框架 - 服务提供者 | 青空之蓝 WSL2 踩坑记录 | 青空之蓝 浅谈浏览器Event Loop [更新] | 青空之蓝 从零实现一个 PHP 微框架 - Bootstrap 启动加载 | 青空之蓝 从零实现一个 PHP 微框架 - IoC 容器 | 青空之蓝 从零实现一个 PHP 微框架 - PSR & Composer | 青空之蓝 从零实现一个 PHP 微框架 - 前言 | 青空之蓝 MVVM 简单实现 | 青空之蓝 浅谈 DI 和 IoC | 青空之蓝 中间件实现 [PHP] | 青空之蓝 告别 Windows 终端的难看难用,打造好用的 PowerShell | 青空之蓝 VSCode Java输出中文乱码问题解决[更新] | 青空之蓝 浅谈浏览器渲染 | 青空之蓝 Vue-Cli@2 项目迁移日志 | 青空之蓝 Laragon & Scoop 集成踩坑记录 | 青空之蓝 「一行代码」优雅管理 Windows 软件 | 青空之蓝 [青空之蓝-2019]-年度总结 | 青空之蓝 为Vue添加简单的Store | 青空之蓝 为React添加简单的Store | 青空之蓝 为Vuex添加同步Action | 青空之蓝 浅谈B+树 | 青空之蓝 浅谈跳表 | 青空之蓝 浅谈数据库索引 | 青空之蓝 MySQL事务隔离 | 青空之蓝 算法复杂度分析(1) | 青空之蓝 一年来的经验总结 | 青空之蓝 Acrylic - VSCode Extension | 青空之蓝 ace编辑器设置惯性滚动 | 青空之蓝 Java二叉树实现 | 青空之蓝 Java图实现 | 青空之蓝 为apt方式安装的nginx重新编译增加WebDAV | 青空之蓝 XK-Editor - 一个支持富文本和Markdown的编辑器 | 青空之蓝 JS生成列表树 | 青空之蓝 Laravel生成目录树 | 青空之蓝 XK-Note - 集各种神奇功能的云笔记 | 青空之蓝 PHP GD生成验证码 | 青空之蓝 PHP GD图片处理[转换格式-水印-缩略图] | 青空之蓝 Origami - 简洁轻快的WordPress主题 | 青空之蓝 为WordPress启用WorkBox | 青空之蓝 [青空之蓝-2018]-年度总结 | 青空之蓝 VSCode Java手动导入jar和源码包 | 青空之蓝 C链表实现重制版 | 青空之蓝 C 结构体的定义和使用 | 青空之蓝 图的搜索(遍历) - BFS & DFS | 青空之蓝 Java链表实现 | 青空之蓝 C 快速排序 | 青空之蓝 C 插入排序 | 青空之蓝 C 归并排序 | 青空之蓝 C语言链表实现 | 青空之蓝 VSCode配置Java调试环境[Windows] | 青空之蓝 C 选择排序 | 青空之蓝 C 冒泡排序 | 青空之蓝 VSCode配置PHP调试环境[Windows] | 青空之蓝 VSCode配置C/C++ GDB调试环境[Windows] | 青空之蓝 WordPress友情链接模板 | 青空之蓝 Intel Optane 傲腾内存体验 | 青空之蓝 Mysql双机热备实战 | 青空之蓝 博客一年记录 | 青空之蓝 为WordPress启用Service Worker | 青空之蓝 Bing每日一图API | 青空之蓝 iframe延迟加载 | 青空之蓝 写在2018年高考前 | 青空之蓝 The Fox主题汉化分享 | 青空之蓝 [青空之蓝-2017]-崭新 | 青空之蓝 本博客评论规则 | 青空之蓝 世界,您好! | 青空之蓝
Windows IP变化自动发送邮件 | 青空之蓝
Otstar Lin · 2018-12-30 · via 青空之蓝

由于学校的机房使用的 IDE 过于坑爹,什么 VC6.0 啦,VS2008 啦,DEV-C++啦,一点补全功能都没有,Java 用的是反人类的 Eclipse,无奈只能远程连接我的工作站,其实就是垃圾笔电啦,这时就需要知道笔电的 IP,然而学校并不提供固定 IP,什么时候变化都不可知,若 IP 变了然而我不知,上课时只能咕咕了,所以只好造个通知的脚本来检查 IP 变化,并在变化时发送邮件通知我

原理

还要什么原理,就是执行 windows 的 ipconfig 命令然后提取其中的 IPv4 地址,与之前检测存储的 IP 进行比较,若相同,则 IP 不变化,若变化就写入新的 IP,同时调用发送邮件的脚本

实现

本文使用 Python3 来开发,所以需要先装好 Python3 的环境,至于为什么要用 python 来开发,请看上一篇文章,其实就是 Java 要导入 jar 包,之前没解决如何 jar 包,无奈只能使用不太熟悉的 Python 来开发

检查脚本

import subprocess
import re
import os
nowip = subprocess.Popen('ipconfig', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
s = nowip.stdout.read()
s2 = s.decode("GBK")
wlan_index = s2.find("无线局域网适配器 WLAN:")
wlan_str = s2[wlan_index:]
ip_str = wlan_str[wlan_str.find("IPv4 地址"):wlan_str.find("子网掩码")]
ip_str = ip_str[34:]
ip = re.search("([.\d]+)", ip_str).group(1)
ip_log = open("E:/ip_log.txt","r")
if ip_log.readline() == ip:
    print("Yes")
else:
    print("No")
    ip_log2 = open("E:/ip_log.txt","w")
    ip_log2.write(ip)
    os.system("python E:/ip_notice.py")
ip_log.close()
import subprocess
import re
import os
nowip = subprocess.Popen('ipconfig', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
s = nowip.stdout.read()
s2 = s.decode("GBK")
wlan_index = s2.find("无线局域网适配器 WLAN:")
wlan_str = s2[wlan_index:]
ip_str = wlan_str[wlan_str.find("IPv4 地址"):wlan_str.find("子网掩码")]
ip_str = ip_str[34:]
ip = re.search("([.\d]+)", ip_str).group(1)
ip_log = open("E:/ip_log.txt","r")
if ip_log.readline() == ip:
    print("Yes")
else:
    print("No")
    ip_log2 = open("E:/ip_log.txt","w")
    ip_log2.write(ip)
    os.system("python E:/ip_notice.py")
ip_log.close()

发送邮件脚本

#  coding:utf-8
import smtplib
from email.mime.text import MIMEText
from email.utils import formatdate
from email.header import Header
import sys
import subprocess

# 本地执行获取IP
nowip = subprocess.Popen('ipconfig', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
ip_gbk = nowip.stdout.read()
ip_out = ip_gbk.decode("GBK")

#设置默认字符集为UTF8 不然有些时候转码会出问题
default_encoding = 'utf-8'
if sys.getdefaultencoding() != default_encoding:
    reload(sys)
    sys.setdefaultencoding(default_encoding)

#发送邮件的相关信息,根据你实际情况填写
smtpHost = 'SMTP地址'
# smtpPort = '25'
sslPort = '465' # 端口
fromMail = '邮件发送方'
toMail = '邮件接收方'
username = '登陆SMTP的用户名'
password = '密码'

#邮件标题和内容
subject = u'Otstar-Laptop-IPNotice'
body = u'' + ip_out

#初始化邮件
encoding = 'utf-8'
mail = MIMEText(body.encode(encoding), 'plain', encoding)
mail['Subject'] = Header(subject, encoding)
mail['From'] = fromMail
mail['To'] = toMail
mail['Date'] = formatdate()

try:
    # 连接smtp服务器,明文/SSL/TLS三种方式,根据你使用的SMTP支持情况选择一种
    # 普通方式,通信过程不加密
    # smtp = smtplib.SMTP(smtpHost, smtpPort)
    # smtp.ehlo()
    # smtp.login(username, password)

    # tls加密方式,通信过程加密,邮件数据安全,使用正常的smtp端口
    # smtp = smtplib.SMTP(smtpHost,smtpPort)
    # smtp.set_debuglevel(True)
    # smtp.ehlo()
    # smtp.starttls()
    # smtp.ehlo()
    # smtp.login(username,password)

    # 纯粹的ssl加密方式,通信过程加密,邮件数据安全
    smtp = smtplib.SMTP_SSL(smtpHost,sslPort)
    smtp.ehlo()
    smtp.login(username,password)

    # 发送邮件
    smtp.sendmail(fromMail, toMail, mail.as_string())
    smtp.close()
    print ("OK")
except Exception as e:
    print (e)
#  coding:utf-8
import smtplib
from email.mime.text import MIMEText
from email.utils import formatdate
from email.header import Header
import sys
import subprocess

# 本地执行获取IP
nowip = subprocess.Popen('ipconfig', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
ip_gbk = nowip.stdout.read()
ip_out = ip_gbk.decode("GBK")

#设置默认字符集为UTF8 不然有些时候转码会出问题
default_encoding = 'utf-8'
if sys.getdefaultencoding() != default_encoding:
    reload(sys)
    sys.setdefaultencoding(default_encoding)

#发送邮件的相关信息,根据你实际情况填写
smtpHost = 'SMTP地址'
# smtpPort = '25'
sslPort = '465' # 端口
fromMail = '邮件发送方'
toMail = '邮件接收方'
username = '登陆SMTP的用户名'
password = '密码'

#邮件标题和内容
subject = u'Otstar-Laptop-IPNotice'
body = u'' + ip_out

#初始化邮件
encoding = 'utf-8'
mail = MIMEText(body.encode(encoding), 'plain', encoding)
mail['Subject'] = Header(subject, encoding)
mail['From'] = fromMail
mail['To'] = toMail
mail['Date'] = formatdate()

try:
    # 连接smtp服务器,明文/SSL/TLS三种方式,根据你使用的SMTP支持情况选择一种
    # 普通方式,通信过程不加密
    # smtp = smtplib.SMTP(smtpHost, smtpPort)
    # smtp.ehlo()
    # smtp.login(username, password)

    # tls加密方式,通信过程加密,邮件数据安全,使用正常的smtp端口
    # smtp = smtplib.SMTP(smtpHost,smtpPort)
    # smtp.set_debuglevel(True)
    # smtp.ehlo()
    # smtp.starttls()
    # smtp.ehlo()
    # smtp.login(username,password)

    # 纯粹的ssl加密方式,通信过程加密,邮件数据安全
    smtp = smtplib.SMTP_SSL(smtpHost,sslPort)
    smtp.ehlo()
    smtp.login(username,password)

    # 发送邮件
    smtp.sendmail(fromMail, toMail, mail.as_string())
    smtp.close()
    print ("OK")
except Exception as e:
    print (e)

博主偷懒就只发送 ipconfig 的返回值,没切片得出 IP,需要的可以将切片代码从检查脚本复制到通知脚本即可

Windows IP变化自动发送邮件

https://blog.ixk.me/post/windows-ip-changes-to-automatically-send-mail
  • 许可协议

    BY-NC-SA

  • 本文作者

    Otstar Lin

  • 发布于

    2018/12/30

转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!

VSCode Java手动导入jar和源码包C链表实现重制版