外网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超 ...
随机推荐
- FXML Stuffs (include and define)
FXML Stuffs (include and define)Hello folks,Today I would like to blog about the FXML define and inc ...
- 《剑指offer》-找到数组中重复的数字
题目描述 在一个长度为n的数组里的所有数字都在0到n-1的范围内. 数组中某些数字是重复的,但不知道有几个数字是重复的.也不知道每个数字重复几次.请找出数组中任意一个重复的数字. 例如,如果输入长度为 ...
- hdu 1875 给出每个结点的坐标 权值为两点间的距离 (MST)
Sample Input2210 10 //坐标20 2031 12 21000 1000 Sample Output1414.2 //最小权值和*100 保留1位小数oh! //不 ...
- 【NPM】npm ERR! Unexpected end of JSON input while parsing near '...",'解决方案
问题描述 今天安装项目依赖npm install 的时候出现错误: npm ERR! Unexpected end of JSON input while parsing near '...e&quo ...
- Python os.path.basename
一.获取对应路径下文件的名字 >>> os.path.basename("/etc/sysconfig/selinux") 'selinux' >>& ...
- xhprof扩展安装与使用
目录 一.xhprof扩展安装步骤 二.xhprof的使用 总结 参考资料 一.xhprof扩展安装步骤 xhprof是PHP的一个扩展,最好也直接安装上graphviz图形绘制工具(用于xhprof ...
- 收缩自编码器(CAE)
自编码器是一种很好的降维技术,它可以学习到数据中非常有用的信息.而收缩自编码器作为正则自编码器的一种,其非线性降维效果非常好,并且它的过程可以通过流形知识来解释. 基础知识 1.自编码器 自编码器是一 ...
- STL之双向队列(dequeue)
//双向队列 deque #include <deque> #include <cstdio> #include <algorithm> using namespa ...
- SQL HAVING 子句使用
HAVING 对由sum或其它集合函数运算结果的输出进行限制. 比如,我们可能只希望看到Store_Information数据表中销售总额超过1500美圆的商店的信息,这时我们就需要使用HAVING从 ...
- 项目冲刺Third
Third Sprint PS:经今天讨论,我们小队决定撤掉用GUI设计界面,改用html和php制作,所以需要修改前面的博客及重新分配任务 1.各个成员今日完成的任务 蔡振翼:撰写博客 谢孟轩:借阅 ...