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发送邮件)的更多相关文章

  1. 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 ...

  2. [转]C#取得内网IP、外网IP、客户端IP方法

    前言 在 Windows Form Application 里对于取得 IP Address 有内网.外网两种 IP Address ,如果只需要取得内网 IP Address ,可以透过使用 IPH ...

  3. 获取Mac、CPUID、硬盘序列号、本地IP地址、外网IP地址OCX控件

    提供获取Mac.CPUID.硬盘序列号.本地IP地址.外网IP地址OCX控件 开发语言:vc++ 可应用与WEB程序开发应用 <HTML><HEAD><TITLE> ...

  4. Delphi 取外网IP

    近日偶要做个程序,需要获得外网IP,偶去网上找相关资料,发现都不尽如人意,有的只能获得本地网卡的IP,有的通过httpget控件获取IP,还有甚者做个asp再调用偶是个懒人,而且上面提到的方法,不是获 ...

  5. Android 获取本地外网IP、内网IP、计算机名等信息

    一.获取本地外网IP public static String GetNetIp() { URL infoUrl = null; InputStream inStream = null; try { ...

  6. C# 取得内网IP、外网IP、客户端IP方法

    前言 在 Windows Form Application 里对于取得 IP Address 有内网.外网两种 IP Address ,如果只需要取得内网 IP Address ,可以透过使用 IPH ...

  7. 如何判断自己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- ...

  8. nginx反向代理下thinkphp、php获取不到正确的外网ip

    在记录用户发送短信需要获取用户ip时,tp一直获取的是内网ip:10.10.10.10 tp框架获取ip方法:get_client_ip /** * 获取客户端IP地址 * @param intege ...

  9. c#获取外网IP地址的方法

    1.如果你是通过路由上网的,可以通过访问ip138之类的地址来获取外网IP 2.如果是通过PPPOE拨号上网的,可以使用以下代码获取IP //获取宽带连接(PPPOE拨号)的IP地址,timeout超 ...

随机推荐

  1. (String中)正则表达式使用如下

    package zhengze;/* * 正则表达式 */public class StringTestZhengZe { public static void main(String[] args) ...

  2. JQuery中jsCharts图表插件(十)

    一:1.jsCharts图表插件 注意:从官方下来的例子都没指定页面编码,在这种情况下,浏览器就会使用默认设置中文编码:GB2312,GBK等:导致无法执行. 请在html代码中的<head&g ...

  3. 【APUE | 7】命令形参、函数

    命令形参 命令行参数是使用main()函数参数来处理的,其中,argc是指传入参数的个数,argv[]是一个指针数组,指向传递给程序的每个参数. 应当指出的是, argv[0]存储程序的名称,argv ...

  4. 怎么在项目中使用前端包管理器bower和构建工具gulp

    下面以WeUI(微信官方网页开发样式库)介绍一下,怎么把WeUi引入到自己的项目中,我的开发环境Visual Studio 2012,当然了Visual Studio 2015对此已有了更好的支持(h ...

  5. A. 【UNR #2】积劳成疾

    链接:http://uoj.ac/contest/40/problem/311 题解: 一道很好的期望题吧 用dp的老思路,枚举最大值将序列分割 想到这个就很简单了 状态f[i][j]表示前i个,最大 ...

  6. 【AtCoder】CODE FESTIVAL 2017 qual A

    A - Snuke's favorite YAKINIKU -- #include <bits/stdc++.h> #define fi first #define se second # ...

  7. PHP如何支持CURL字符串证书传输

    背景 最近在对接微信支付的时候,需要在退款处用到证书,由于我们是SAAS平台,要支持多方多渠道支付,如果把所有证书文件保存在应用服务器会受到SLB的影响,会导致某台机器文件不同步而阻碍退款流程,但把文 ...

  8. [USACO09OPEN]捉迷藏Hide and Seek

    OJ题号:洛谷2951 思路:Dijkstra+堆优化.注意是无向图,所以加边时要正反各加一遍. #include<cstdio> #include<vector> #incl ...

  9. angular.js创建自定义指令-demo3

    html: <!doctype html><html ng-app="myModule"> <head> <meta charset=&q ...

  10. Codeforces Round #404 (Div. 2) D. Anton and School - 2 数学

    D. Anton and School - 2 题目连接: http://codeforces.com/contest/785/problem/D Description As you probabl ...