外网IP监测上报程序(使用Poco库的SMTPClientSession发送邮件)
IPReport
代码地址https://gitee.com/solym/IPReport
项目介绍
外网IP变动自动上报工具。
写这个工具的目的是为了监测一台服务器的外网IP的变动情况。之前办理的电信宽带是有外网IP的,因此把一台小服务器上的ut管理端口开放出来,以便随时都能添加下载任务。
但是这个外网IP不是固定的,大概每周都会变动一次,变动的时间不固定,所以写了个程序来检测它,改变的时候主动发送信息给我。
编译说明
程序依赖于Poco库,需要自己准备。
因为我的服务器装的是ArchLinux,所以直接使用pacman -Syu poco安装就好了。
如果是Windows可以直接使用vcpkg来编译安装poco库。
linux下直接使用make编译即可。
安装使用说明
无需安装,编译之后可以直接运行。
linux下可以使用nohup ./IPReport 2>&1 1>/dev/null &来放在后台运行。
Windows下你可以在VS工程属性页->链接器->系统里面选择子系统为窗口(SUBSYSTEM:WINDOWS)来生成一个无窗口的窗口应用,就可以无控制台运行了。
获取外网IP方式
外网IP可以通过访问淘宝的https://www.taobao.com/help/getip.php获取。
邮件发送关键代码
// 发送邮件通知
// 发送的消息内容
Poco::Net::MailMessage message;
message.setSubject("外网IP地址改变通知");
message.setDate(Poco::DateTime().timestamp());
message.addContent(new StringPartSource(lastResult,"text/plain"));
message.setSender(mailuser);
message.addRecipient(MailRecipient(MailRecipient::PRIMARY_RECIPIENT,mailrecipient));
// 开始发送邮件
// 第一个是非SSL连接的,第二个是SSL连接的
//Poco::Net::SMTPClientSession smtpSession(mailhost);
Poco::Net::SecureSMTPClientSession smtpSession(mailhost);
smtpSession.open();
// 下面两行是SSL连接必须的
smtpSession.login();
smtpSession.startTLS();
// 登录邮件服务
smtpSession.login(Poco::Net::SMTPClientSession::LoginMethod::AUTH_LOGIN, mailuser, mailpasswd);
// 发送出邮件内容
smtpSession.sendMessage(message);
// 发送后关闭会话
smtpSession.close();
外网IP监测上报程序(使用Poco库的SMTPClientSession发送邮件)的更多相关文章
- Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer 关于Newtonsoft.Json,LINQ to JSON的一个小demo mysql循环插入数据、生成随机数及CONCAT函数 .NET记录-获取外网IP以及判断该IP是属于网通还是电信 Guid的生成和数据修整(去除空格和小写字符)
Visual Studio 2017 - Windows应用程序打包成exe文件(2)- Advanced Installer Advanced Installer :Free for 30 da ...
- [转]C#取得内网IP、外网IP、客户端IP方法
前言 在 Windows Form Application 里对于取得 IP Address 有内网.外网两种 IP Address ,如果只需要取得内网 IP Address ,可以透过使用 IPH ...
- 获取Mac、CPUID、硬盘序列号、本地IP地址、外网IP地址OCX控件
提供获取Mac.CPUID.硬盘序列号.本地IP地址.外网IP地址OCX控件 开发语言:vc++ 可应用与WEB程序开发应用 <HTML><HEAD><TITLE> ...
- Delphi 取外网IP
近日偶要做个程序,需要获得外网IP,偶去网上找相关资料,发现都不尽如人意,有的只能获得本地网卡的IP,有的通过httpget控件获取IP,还有甚者做个asp再调用偶是个懒人,而且上面提到的方法,不是获 ...
- Android 获取本地外网IP、内网IP、计算机名等信息
一.获取本地外网IP public static String GetNetIp() { URL infoUrl = null; InputStream inStream = null; try { ...
- C# 取得内网IP、外网IP、客户端IP方法
前言 在 Windows Form Application 里对于取得 IP Address 有内网.外网两种 IP Address ,如果只需要取得内网 IP Address ,可以透过使用 IPH ...
- 如何判断自己IP是内网IP还是外网IP
tcp/ip协议中,专门保留了三个IP地址区域作为私有地址,其地址范围如下: 10.0.0.0/8:10.0.0.0-10.255.255.255 172.16.0.0/12:172.16.0.0- ...
- nginx反向代理下thinkphp、php获取不到正确的外网ip
在记录用户发送短信需要获取用户ip时,tp一直获取的是内网ip:10.10.10.10 tp框架获取ip方法:get_client_ip /** * 获取客户端IP地址 * @param intege ...
- c#获取外网IP地址的方法
1.如果你是通过路由上网的,可以通过访问ip138之类的地址来获取外网IP 2.如果是通过PPPOE拨号上网的,可以使用以下代码获取IP //获取宽带连接(PPPOE拨号)的IP地址,timeout超 ...
随机推荐
- lldp学习
http://support.huawei.com/enterprise/docinforeader!loadDocument1.action?contentId=DOC1000088818& ...
- Flink(三)Flink开发IDEA环境搭建与测试
一.IDEA开发环境 1.pom文件设置 <properties> <maven.compiler.source>1.8</maven.compiler.source&g ...
- day8--socket网络编程进阶
socket:socket就是实现服务器和客户端数据的交换,服务器端接收并发送数据,客户端发送并接收数据,并且需要注意的是,在python3中,socket值接收字节.因为客户端在发送连接给服务器的时 ...
- 使用numpy产生随机数
numpy中的random模块包含了很多方法可以用来产生随机数,这篇文章将对random中的一些常用方法做一个总结. 1.numpy.random.rand(d0, d1, ..., dn) 作用:产 ...
- python tkinter-单选、多选
单选按钮 tkinter.Radiobutton(root,text='a').pack() tkinter.Radiobutton(root,text='b').pack() tkinter.R ...
- Hash值破解工具Hashcat使用
Hash值破解工具Hashcat使用 Hashcat介绍 HashCat系列软件拥有十分灵活的破解方式,可以满足绝大多数的破解需求. Hashcat系列软件是比较牛逼的密码破解软件,系列软件包含Has ...
- Python3 图片水平镜像实现
# -*- coding: utf-8 -*- """ Created on Sun Feb 4 12:15:38 2018 @author: markli " ...
- 虚拟机克隆后导致两台机器的IP都不显示的解决方法
centos7中输入ifconfig出现ens33,没有eth0,也没有ip,不能上网,输入ifconfig后如下图 之前在网上也找了很多的方法,比如删除文件70-persistent-ipoib.r ...
- Git中的bash与CMD的区别
Windows在使用git工具时,可以看到有两个命令输入窗: 1. Git CMD 2. Git Bash 两者的区别:Bash是基于CMD的,Bash在CMD的基础上新增了一些命令和功能,故建议使用 ...
- Angular features and services overview
模块(Modules) 组件(Components) 模板(Templates) 元数据(Metadata) 数据绑定(Data binding) 指令(Directives) 服务(Services ...