外网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超 ... 
随机推荐
- Mac 下 Redis 5.0 的卸载与安装
			卸载 停止 redis 服务器 redis-cli shutdown 检测 #检测后台进程是否存在 ps -ef |grep redis #检测6379端口是否在监听 netstat -lntp | ... 
- 云平台Linux主机安装流程
			==一.安装包===================================================================================如果是1+2主机安装 ... 
- .NetCore源码阅读笔记系列之HttpAbstractions(五) Authentication
			说道认证&授权其实这块才是核心,这款跟前面Security这块有者紧密的联系,当然 HttpAbstractions 不光是认证.授权.还包含其他Http服务和中间价 接下来先就认证这块结合前 ... 
- POJ - 1185  敌兵炮阵
			POJ - 3254 中文题.. 思路:这题可把我恶心坏了,我刚开始的思路其实是正确的... 首先我想开个dp[i][s1][s2]保存到 i行 为止当前行状态为s1,上一行状态为s2 的最大个数,然 ... 
- BZOJ1968 [Ahoi2005]COMMON 约数研究 数论
			欢迎访问~原文出处——博客园-zhouzhendong 去博客园看该题解 题目传送门 - BZOJ1968 题意概括 求 ΣF(i) (1<=i<=n)N<=1000000 F( ... 
- 增强for 可以用于ArrayList
			ArrayList<Integer> list=null; for(int i : list){ sum+=i; } 
- IdentityServer4-主题
			一.Startup 二.定义Resources 三.定义Clients 四.登录 五.使用外部身份提供商登录 六.Windows身份验证 七.登出 八.注销外部身份提供商 九.联合注销 十.联合网关 ... 
- RabbitMQ for CentOS安装教程
			一.下载并安装Erlang 下载地址:http://www.erlang.org/downloads otp_src_20.3.tar.gz ①解压otp_src_20.3.tar.gz ②安装各种驱 ... 
- #1075 : 开锁魔法III
			描述 一日,崔克茜来到小马镇表演魔法. 其中有一个节目是开锁咒:舞台上有 n 个盒子,每个盒子中有一把钥匙,对于每个盒子而言有且仅有一把钥匙能打开它.初始时,崔克茜将会随机地选择 k 个盒子用魔法将它 ... 
- 5410 ACM 杭电 01+完全背包
			题目:http://acm.hdu.edu.cn/showproblem.php?pid=5410 虽然是英文题目:但还是很好理解的.明显的背包问题 思路:如果你能想到把题目拆分成小问题,就会简单许多 ... 
