# liteip
**Repository Path**: Yogile/liteip
## Basic Information
- **Project Name**: liteip
- **Description**: 基于 Python 的终端网络信息获取小工具,实现域名、 IPv4 、 IPv6 、 MAC 更新的电子邮件通知。
支持 Windows7 、 Windows10 、 FreeBSD ( Linux 应该都可以支持),建议搭配 DDNS 配合使用。
- **Primary Language**: Unknown
- **License**: AGPL-3.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2023-10-16
- **Last Updated**: 2023-12-29
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# liteip
## 介绍
基于 Python 的终端网络信息获取小工具,实现域名、 IPv4 、 IPv6 、 MAC 更新的电子邮件通知。
支持 Windows7 、 Windows10 、 FreeBSD ( Linux 应该都可以支持),建议搭配 DDNS 配合使用。
## 文件说明
`liteip_main_debug.py` 为主要程序,用于实现功能。
`read_liteip_db.py` 用于查看数据库文件。
两者完全独立。
## 使用教程
### 1. 生成配置文件
Python3 运行即可生成配置文件:
```sh
python3 ./liteip_main_debug.py
```
提示:
```
[WARNING] [__main__] Config.ini has been created. Check and modify file content.
[ERROR] [PROSSESE_INFO] [Init_Config] Config.ini COMMOND has not been modify.
[WARNING] [__main__] Config.ini has been created. Check and modify file content.
```
生成的配置文件 `config.ini` 在 `liteip_main_debug.py` 相同路径下:
```ini
[COMMAND]
command =
[MAIL_SENDER]
usermail =
password =
server = smtp.qq.com
port = 465
username =
[MAIL_RECEIVER]
usermail =
username =
[MAIL_BODY]
mail_body =
[MAIL_AHERF]
mail_aherf =
```
### 2. 修改配置文件
#### 2.1 `[COMMAND]`
`command` 用于获取终端 IPv6 。
建议:固定公网 IPv6 前缀 60 位,固定终端本地 IPv6 后缀。
此参数逻辑:正则匹配所有 IPv6 地址的前 4 位十六进制和后 4 位十六进制。
#### 2.2 `[MAIL_SENDER]`
| 项 | 值 | 说明 |
| ---------- | ---------------- | ------------------------------------------ |
| `usermail` | `example@qq.com` | 发件邮箱账号(对应邮件服务器) |
| `password` | `examplepass` | 发件邮箱账号密钥(16位密钥) |
| `server` | `smtp.qq.com` | 默认使用 QQ SMTP 邮件服务器,可自行修改 |
| `port` | `465` | 默认使用QQ SMTP 邮件服务器端口,可自行修改 |
| `username` | `ExampleSender` | 发件人名称,可自定义 |
#### 2.3 `[MAIL_RECEIVER]`
| 项 | 值 | 说明 |
| ---------- | ----------------- | -------------------- |
| `usermail` | `example@qq.com` | 收件邮箱 |
| `username` | `ExampleReceiver` | 收件人名称,可自定义 |
#### 2.4 `[MAIL_BODY]`
| 项 | 值 | 说明 |
| ----------- | --------- | -------- |
| `mail_body` | `Subject` | 邮件主题 |
#### 2.5 `[MAIL_AHERF]`
| 项 | 值 | 说明 |
| ------------ | ----------------------------------------------- | -------------------- |
| `mail_aherf` | `百度一下` | 邮件内链接 HTML 文本 |
#### 2.6 示例
注意:所有参数都按照字符串管理,无需加 `""` 双引号。
Windows
```
[COMMAND]
start = 2409
end = 2w3e
[MAIL_SENDER]
usermail = example@qq.com
password = dafhafjyjd3557yjgh
server = smtp.qq.com
port = 465
username = Example Mail
[MAIL_RECEIVER]
usermail = example@qq.com
username = Example
[MAIL_BODY]
mail_body = Example 数据变更通知
[MAIL_AHERF]
mail_aherf = [百度一下] 。
```
Linux:
```
[COMMAND]
command = ifconfig eth0 | grep 'inet6 2409' | grep '216:xxxx:xxxx:6b8c' | awk '{print $2}' | head -1
[MAIL_SENDER]
usermail = example@qq.com
password = dafhafjyjd3557yjgh
server = smtp.qq.com
port = 465
username = Example Mail
[MAIL_RECEIVER]
usermail = example@qq.com
username = Example
[MAIL_BODY]
mail_body = Example 数据变更通知
[MAIL_AHERF]
mail_aherf = [百度一下] 。
```
### 3. 自动生成 liteip.db 文件
修改完配置文件后,再次执行程序。
```
python3 ./liteip_main_debug.py
```
提示:
```
[INFO] [SQLITE] [Check_DB_And_TABLE] DB file created.
[INFO] [SQLITE] [Check_DB_And_TABLE] Created TABLE LITE_IP
[INFO] [INFOMATION] [Set_HOST] INFOMATION.HOST update
[INFO] [INFOMATION] [Auto_Init] AUTOSET_HOST
[INFO] [INFOMATION] [AutoSet_UPTIME] INFOMATION.UPTIME update
[INFO] [INFOMATION] [Auto_Init] AUTOSET_UPTIME
[INFO] [INFOMATION] [Set_IPV4] INFOMATION.IPV4 update
[INFO] [INFOMATION] [Auto_Init] AUTOSET_IPV4
[INFO] [SUBPROCESS] [Get_IPv6] Finish
[INFO] [INFOMATION] [Set_IPV6] INFOMATION.IPV6 update
[INFO] [INFOMATION] [Auto_Init] AUTOSET_IPV6
[INFO] [INFOMATION] [Set_MAC] INFOMATION.MAC update
[INFO] [INFOMATION] [Auto_Init] AUTOSET_MAC
[INFO] [SQLITE] [Check_DB_And_TABLE] Created DB and TABLE finish
[INFO] [SQLITE] [Check_Connect] Connected DB
[INFO] [SQLITE] [GET_INFO] 'SELECT from LITE_IP' succese
[INFO] [INFOMATION] [AutoSet_UPTIME] INFOMATION.UPTIME update
[INFO] [INFOMATION] [Auto_Init] AUTOSET_UPTIME
[INFO] [SUBPROCESS] [Get_IPv6] Finish
[INFO] [MAIL] [SendMail] server.login() success
[INFO] [MAIL] [SendMail] server.sendmail() success
[INFO] {'INFOMATION.HOST': 'FreeBSD', 'INFOMATION.UPTIME': '2023-10-20 07:08:38', 'INFOMATION.IPV4': '192.168.2.1', 'INFOMATION.IPV6': 'fe80::216:XXXX:XXXX:XXXX', 'INFOMATION.MAC': 'XX:XX:XX:XX:XX:XX'}
[INFO]
```
无 `[ERROR]` 错误,则运行正常。
最后输出邮件主要通告信息字典,且提示 `SendMail ......success` 邮件发送成功。收到邮件后无异常即可正常使用。
### 4. 邮件
邮件内容在 `liteip_mail_debug.py` 文件 `class Mail` 类的 `def Get_Html(id, host, uptime, ipv4, ipv6, mac)` 函数中。
可自行修改有关内容。
示例:

### 5. 更新通知
建议通过计划任务实现每 15 分钟定时检查发送。
> 因公网 IPv6 会不定时变化。
再次执行 `python3 ./liteip_main_debug.py` 时:
```
[INFO] [__main__] 2023-10-20 09:17:33
[INFO] [PROSSESE_INFO] [Init_Name_And_Path] Get system type: Linux
[INFO] [SQLITE] [Check_Connect] Connected DB
[INFO] [SQLITE] [GET_INFO] 'SELECT from LITE_IP' succese
[INFO] [INFOMATION] [AutoSet_UPTIME] INFOMATION.UPTIME update.
[INFO] [INFOMATION] [Auto_Init] AUTOSET_UPTIME
[ERROR] [SUBPROCESS] [Get_IPv6] Finish.
[INFO] [__main__] No infomation changed. Pass send mail.
[INFO] {'INFOMATION.HOST': 'FreeBSD', 'INFOMATION.UPTIME': '2023-10-20 07:08:38', 'INFOMATION.IPV4': '192.168.2.1', 'INFOMATION.IPV6': 'fe80::216:XXXX:XXXX:XXXX', 'INFOMATION.MAC': 'XX:XX:XX:XX:XX:XX'}
[INFO]
```
判断无数据变化,则:`No infomation changed. Pass send mail.` 不发送邮件。