UniFi - 如何导出和删除设备数据


概述


本文介绍如何从 UniFi 控制器中导出或者删除数据。


目录


  1. UniFi 控制器 - 网络管理数据
  2. UniFi 控制器 - Guest Portal 数据
  3. UniFi 控制器 App

 

UniFi 控制器 - 网络管理数据


回到顶部

UniFi 控制器中网络管理相关的数据和每个客户端设备的 MAC ID 有关。网络管理员可以使用以下自定义脚本轻松导出或删除与客户端设备关联的所有数据。请按照//后的说明使用脚本。切记 client_mac 修改为客户端设备的 MAC ID 。以下是有关如何在 Windows,macOS 和 Linux 中运行此脚本的说明。

脚本默认为导出数据。如果需要删除数据,您需按照脚本中的说明将 var delete_sta = false;改为 var delete_sta = true;。 

var client_mac = '00:15:6d:00:00:00';

// 更改为 true,使脚本从数据库中删除客户端
// 如果为 false,则不会对数据库进行任何更改
var delete_sta = false;


print((delete_sta ? 'delete' : 'query') + ' data for client[' + client_mac + ']... ');

use ace;
var collectionNames = db.getCollectionNames();
for (i=0; i<collectionNames.length; i++) {
    var name = collectionNames[i];
    var query = null;

    if (name === 'user') {
        query = { mac: client_mac };
    }

    if (name === 'guest') {
        query = { mac: client_mac };
    }

    if (name === 'event' || name === 'alarm') {
        query = { msg: { $regex : '.*' + client_mac + '.*' }};
    }

    if (query) {
        count = db.getCollection(name).find(query).count();
        if (count > 0) {
            var user_records = db.getCollection(name).find(query).toArray();
            print('dumping ' + count + ' entries for client[' + client_mac + '] from ' + name + '... ');
            printjson(user_records);
            if (delete_sta) {
                db.getCollection(name).remove(query);
            }
        }
    }
}

use ace_stat;
var setFields = [ 'x-set-guest-num_sta', 'x-set-user-num_sta', 'x-set-guest-lan-num_sta', 'x-set-guest-wlan-num_sta', 'x-set-user-lan-num_sta', 'x-set-user-wlan-num_sta', 'oid' ];
var collectionNames = db.getCollectionNames();
for (i=0; i<collectionNames.length; i++) {
    var name = collectionNames[i];
    var query = null;

    if (name === 'stat_life') {
        query = {o: 'user', oid: client_mac};
    }

    if (name === 'stat_archive') {
        query = {o: 'session', mac: client_mac};
    }

    if (name === 'stat_dpi') {
        query = {o: 'dpi', oid: client_mac};
    }

    if (query) {
        count = db.getCollection(name).find(query).count();
        if (count > 0) {
            stat_records = db.getCollection(name).find(query).toArray();
            print('dumping ' + count + ' entries for client[' + client_mac + '] from ' + name + '... ');
            printjson(stat_records);
            if (delete_sta) {
                db.getCollection(name).remove(query);
            }
        }
    }

    if (name === 'stat_minute'
        || name === 'stat_5minutes'
        || name === 'stat_hourly'
        || name === 'stat_daily'
        || name === 'stat_monthly'
    ) {
        for (f = 0; f < setFields.length; f++) {
            field = setFields[f];
            query = {};
            query[field] = client_mac;
            count = db.getCollection(name).find(query).count();
            if (count > 0) {
                stat_records = db.getCollection(name).find(query).toArray();
                print('dumping ' + count + ' entries for client[' + client_mac + '] from ' + name + '... ');
                printjson(stat_records);

                if (delete_sta) {
                    pull = {};
                    pull[field] = client_mac;
                    db.getCollection(name).update(query, { $pull: pull }, {multi: true});
                }
            }
        }
    }
}

如何运行脚本

注意:在执行任何操作之前,请记得给控制器创建备份。

Windows

1.下载 mongo。Windows 用户的控制器安装程序不包含 mongo 二进制文件。请访问 MongoDB 官方下载网站,从所有二进制文件链接中选择版本 2.4.14,然后下载与您的 PC 的 CPU 相对应的 .zip 版本。请参阅此处的旧二进制列表。

2.将 \bin\mongo.exe 解压。在本示例中,我们将使用 C:\GDPR\作为解压目录。您可以忽略解压文件中包含的其他文件。

3. 单击此处将脚本下载到服务器,并将其保存到您的工作目录中。

4.通过按 WINDOWS + R 打开命令提示符。在弹出窗口中,输入  cmd 并按 Enter。

5.在命令提示符下,转到您的工作目录:

cd C:\GDPR\

6.默认情况下,脚本只会导出数据。如果您需要清除数据,请先执行脚本将数据导出后再清除。脚本执行命令如下:

mongo.exe --port 27117 < query_sta.js

7.要删除数据,必须修改脚本。使用记事本或类似的纯文本编辑器来修改脚本。请勿使用类似写字板或 Word 的富文本编辑器。建议使用诸如 Notepad ++ 之类的编辑器,因为它不会添加隐藏字符,并且会考虑换行符。通过以下方式修改脚本:

更改 var delete_sta = false;

 var delete_sta = true;

8.运行修改后的脚本。这次将清除数据库中的数据:

mongo.exe --port 27117 < query_sta.js

注意: 由于实际上正在修改数据库,因此与步骤 6 中的测试相比,此步骤可能花费更长的时间。在收到提示信息 bye 之前,请勿中断控制台。

9.如果您不想再次使用它,请删除创建的 GDPR 目录和其中的文件。

macOS

1.在计算机上创建一个工作目录。在本示例中,我们将创建一个名为 / GDPR 的目录。

2.下载 mongo。macOS 用户的控制器安装程序不包含 mongod 二进制文件。请访问 MongoDB 官方下载网站,单击 OSX 选项卡,从所有二进制文件链接中选择版本 2.4.14,然后下载 .tgz 软件包。

3.下载的软件包,然后将其解压缩。

4.找到 bin / mongo 二进制文件,然后将其复制到您的工作目录中。此时,由于我们只需要 mongo 二进制文件,因此可以删除下载的 .tgz 软件包和任何其他文件。

5.打开 Terminal 窗口,然后将目录更改为在步骤 1 中创建的工作目录:

cd /GDPR

6.下载 GDPR 脚本:

curl "https://help.ubnt.com.cn/hc/zh-cn/article_attachments/900000014846/query_sta.js" -o "query_sta.js"

7.对脚本进行运行测试。默认情况下,脚本只会导出数据,如果您需要清除数据,请先执行脚本将数据导出后再清除。脚本执行命令如下:

./mongo --port 27117 < query_sta.js

8.要删除数据,必须修改脚本。使用记事本或类似的纯文本编辑器来修改脚本。请勿使用类似写字板或Word 的富文本编辑器。建议使用诸如 Notepad ++ 之类的编辑器,因为它不会添加隐藏字符,并且会考虑换行符。通过以下方式修改脚本:

更改 var delete_sta = false;

 var delete_sta = true;

9.运行修改后的脚本,这一次将清除数据:

mongod --port 27117 < query_sta.js

注意: 由于实际上正在修改数据库,因此与步骤 7 中的测试相比,此步骤可能花费更长的时间。在收到提示信息 bye 之前,请勿中断控制台。

10.确认操作成功完成,并且未报告任何错误。  

11.结束 mongo terminal 会话:

exit

然后关闭 terminal 窗口。

12.如果您不想再次使用它可以将文件删除。

Linux (Ubuntu, Debian, and Cloud Key)

1.使用首选客户端通过 SSH 连接到服务器并进行身份验证。以下示例为通过 putty 进入 Cloud Key。如果使用 Linux 或 Mac 客户端,则可以使用内置终端连接到服务器。

2.转到您的主目录,或创建您选择的工作目录。对于本文,将使用主目录。

cd ~

3.将 GDPR 脚本下载到您的服务器:

wget https://help.ubnt.com.cn/hc/zh-cn/article_attachments/900000014846/query_sta.js

4.执行脚本的运行测试。默认情况下,脚本只会导出数据,如果您需要清除数据,请先执行脚本将数据导出后再清除。脚本执行命令如下:

mongod --port 27117 < query_sta.js

5.要删除数据,必须修改脚本。使用记事本或类似的纯文本编辑器来修改脚本。请勿使用类似写字板或Word 的富文本编辑器。建议使用诸如 Notepad ++ 之类的编辑器,因为它不会添加隐藏字符,并且会考虑换行符。通过以下方式修改脚本:

更改 var delete_sta = false;

 var delete_sta = true;

6.运行修改后的脚本,这一次将清除数据:

./mongo --port 27117 < query_sta.js

注意: 由于实际上正在修改数据库,因此与步骤 4 中的测试相比,此步骤可能花费更长的时间。在收到提示信息 bye之 前,请勿中断控制台。

7.确认操作成功完成,并且未报告任何错误。

8.如果您不想再次使用它,请从主目录中删除该脚本:

rm query_sta.js

9.结束 mongo 终端会话:

exit


UniFi 控制器 - Guest Portal 数据


回到顶部

UniFi Guest Portal 中的数据将与每个终端用户的姓名和电子邮件地址有关。网络管理员可以通过运行以下自定义脚本来导出或删除 Guest Portal 数据。请按照//后的说明使用脚本。切记修改first_namelast_name 和 email 的信息

脚本默认为导出数据。如果需要删除数据,您需按照脚本中的说明将 var delete_payment = false; 更改为 var delete_payment = true; 。请注意,您只能删除个人数据,付款信息或同时删除两者。

// 引号内的内容根据用户信息修改
var first_name = 'John';
var last_name = 'Smith';
var email = 'john@example.com';
// 更改为 true,使脚本从数据库中删除客户端
// 如果为 false,则不会对数据库进行任何更改 var clean_personal_data = false; var delete_payment = false; function human_readable_query (query) { var text = ''; text += query.first_name && query.last_name ? (query.first_name + ' ' + query.last_name) : query.firstName || query.lastName; if (query.email) { text += ' (' + query.email + ')'; } return text; } use ace; var collectionName = 'payment'; var query = {} if (first_name) { query.first_name = first_name; }; if (last_name) { query.last_name = last_name; }; if (email) { query.email = email; }; var action = delete_payment ? 'delete' : (clean_personal_data ? 'clean personal' : 'query'); print(action + ' data for payment[' + human_readable_query(query) + ']... '); count = db.getCollection(collectionName).find(query).count(); if (count > 0) { var user_records = db.getCollection(collectionName).find(query).toArray(); print('dumping ' + count + ' entries for payment[' + human_readable_query(query) + '] from ' + collectionName + '... '); printjson(user_records); if (delete_payment) { db.getCollection(collectionName).remove(query); } else if (clean_personal_data) { db.getCollection(collectionName).update(query, {$set: { first_name: '', last_name: '', email: '', info: '',
city: '',
zip: '',
state: '' }}) } }

如何运行脚本

注意:在执行任何操作之前,请记得给控制器创建备份。

Windows

1.下载 mongo。Windows 用户的控制器安装程序不包含 mongo 二进制文件。请访问 MongoDB 官方下载网站,从所有二进制文件链接中选择版本 2.4.14,然后下载与您的 PC 的 CPU 相对应的 .zip 版本。请参阅此处的旧二进制列表。

2.将 \ bin \ mongo.exe 解压。在本示例中,我们将使用 C:\ GDPR \ 作为解压目录。您可以忽略解压文件中包含的其他文件。

3. 单击此处将脚本下载到服务器,并将其保存到您的工作目录中。

4.通过按 WINDOWS + R 打开命令提示符。在弹出窗口中,键入  cmd 并按 Enter。

5.在命令提示符下,转到您的工作目录:

cd C:\GDPR\

6.默认情况下,脚本只会导出数据。如果您需要清除数据,请先执行脚本将数据导出后再清除。脚本执行命令如下:

mongo.exe --port 27117 < query_payment.js

7.要删除数据,必须修改脚本。使用记事本或类似的纯文本编辑器来修改脚本。请勿使用类似写字板或Word 的富文本编辑器。建议使用诸如 Notepad ++ 之类的编辑器,因为它不会添加隐藏字符,并且会考虑换行符。通过以下方式修改脚本:

更改 var delete_sta = false;

 var delete_sta = true;

8.运行修改后的脚本。这次将清除数据库中的数据:

mongo.exe --port 27117 < query_payment.js


注意: 由于实际上正在修改数据库,因此与步骤 6 中的测试相比,此步骤可能花费更长的时间。在收到提示信息 bye 之前,请勿中断控制台。

9.如果您不想再次使用它,请删除创建的 GDPR 目录和其中的文件。

macOS

1.在计算机上创建一个工作目录。在本示例中,我们将创建一个名为 / GDPR 的目录。

2.下载 mongo。macOS 用户的控制器安装程序不包含 mongod 二进制文件。请访问 MongoDB 官方下载网站,单击 OSX 选项卡,从所有二进制文件链接中选择版本 2.4.14,然后下载 .tgz 软件包。

3.下载的软件包,然后将其解压缩。

4.找到 bin / mongo 二进制文件,然后将其复制到您的工作目录中。此时,由于我们只需要 mongo 二进制文件,因此可以删除下载的 .tgz 软件包和任何其他文件。

5.打开 Terminal 窗口,然后将目录更改为在步骤 1 中创建的工作目录:

cd /GDPR

6.下载 GDPR 脚本:

curl "https://help.ubnt.com.cn/hc/zh-cn/article_attachments/900000015363/query_payment.js" -o "query_payment.js"

7.对脚本进行运行测试。默认情况下,脚本只会导出数据,如果您需要清除数据,请先执行脚本将数据导出后再清除。脚本执行命令如下:

./mongo --port 27117 < query_payment.js

8.要删除数据,必须修改脚本。使用记事本或类似的纯文本编辑器来修改脚本。请勿使用类似写字板或Word 的富文本编辑器。建议使用诸如 Notepad ++ 之类的编辑器,因为它不会添加隐藏字符,并且会考虑换行符。通过以下方式修改脚本:

更改 var delete_sta = false;

var delete_sta = true;

9.运行修改后的脚本,这一次将清除数据:

./mongo --port 27117 < query_payment.js

注意: 由于实际上正在修改数据库,因此与步骤 7 中的测试相比,此步骤可能花费更长的时间。在收到提示信息 bye 之前,请勿中断控制台。

10.确认操作成功完成,并且未报告任何错误。

11.结束 mongo terminal 会话:

exit

然后关闭 terminal 窗口。

12.如果您不想再次使用它可以将文件删除。

Linux (Ubuntu, Debian and Cloud Key)

1.使用首选客户端通过 SSH 连接到服务器并进行身份验证。以下示例为通过 putty 进入 Cloud Key。如果使用 Linux 或 Mac 客户端,则可以使用内置终端连接到服务器。

2.转到您的主目录,或创建您选择的工作目录。对于本文,将使用主目录。

cd ~

3. 将 GDPR 脚本下载到您的服务器

wget https://ubnt-cn.zendesk.com/hc/article_attachments/900000015363/query_payment.js

4.执行脚本的运行测试。默认情况下,脚本只会导出数据,如果您需要清除数据,请先执行脚本将数据导出后再清除。脚本执行命令如下:

./mongo --port 27117 < query_payment.js

5.要删除数据,必须修改脚本。使用记事本或类似的纯文本编辑器来修改脚本。请勿使用类似写字板或Word 的富文本编辑器。建议使用诸如 Notepad ++ 之类的编辑器,因为它不会添加隐藏字符,并且会考虑换行符。通过以下方式修改脚本:

更改 var delete_sta = false;

 var delete_sta = true;

6.运行修改后的脚本,这一次将清除数据:

./mongo --port 27117 < query_payment.js

注意: 由于实际上正在修改数据库,因此与步骤 4 中的测试相比,此步骤可能花费更长的时间。在收到提示信息 bye之 前,请勿中断控制台。

7.确认操作成功完成,并且未报告任何错误。

8.如果您不想再次使用它,请从主目录中删除该脚本:

rm query_payment.js

9.结束 mongo 终端会话:

exit


UniFi 控制器 App


回到顶部

通过控制器使用上面的脚本进行操作时,将删除/导出由控制器收集的大多数信息。除此之外,还有一些本地数据可以使用 UniFi 控制器 App 在本地删除。

控制器: 向左滑动并点击移除,可以在“控制器”页面中删除  。 

帐户: 通过点击帐户,然后在列表上选择删除的账户向左滑动并点击移除,将从“帐户”页面中删除