![Linux系统上的网络数据存储在哪里?](https://linux22.com/image/144903/Linux%E7%B3%BB%E7%BB%9F%E4%B8%8A%E7%9A%84%E7%BD%91%E7%BB%9C%E6%95%B0%E6%8D%AE%E5%AD%98%E5%82%A8%E5%9C%A8%E5%93%AA%E9%87%8C%EF%BC%9F.png)
有什么方法可以找到有关我的 wifi 连接的信息吗?我连接到哪些网络以及何时连接?我试图在 proc/net 下查找此信息,但一无所获。 (更具体地说,我想在我的 Android 设备上找到此信息。)
答案1
连接历史记录并没有明确存储在 Linux 上,您必须区分硬件信息和网络信息。硬件特定信息的一个示例是dmesg
,这可能会向您显示有关特定硬件的信息,即链接是打开还是关闭,但不会记录特定 WiFi 接入点的名称。
还值得注意的是,设置取决于您的 Linux 发行版使用的系统。许多基于 Debian 的系统,例如 Ubuntu 和 Deepin,都使用网络管理器。因此,已配置的所有无线连接在/etc/NetworkManager/system-connections
文件夹中都有适当的文件。如果我们讨论的是 WiFi 连接,每个连接的每个文件都会包含接入点的密码和 BSSID。文件名是 ESSID,尽管对于可能在多个 BSSID 接入点共享相同 ESSID 的网络(例如,我的大学在具有不同路由器的不同建筑物中具有相同的 WiFi 接入点名称) - 除了接入点名称。请注意,您必须拥有 root 权限才能查看所有这些信息,尽管您也可以从桌面小程序查看这些信息。我无法评论其他网络管理实用程序,因为我从未使用过它们。
然而,实现此类日志记录是可能的,因为至少网络管理器通过 DBus 进程间通信子系统发送有关连接的信息,因此可以通过dbus-monitor
实用程序编写脚本。
实施此类日志记录时可以考虑的另一件事是 DHCP 租约。使用的系统应在输出systemd
中提供有关来自哪个网关的 IP 地址租用的信息。journalctl
看相关帖子以供参考。
如果您具体询问有关 Android 的问题,请注意 android.stackexchange.com 应该是更合适的询问地点,但我也怀疑 Android 上也有类似的日志记录做法 - 即,当设备连接到接入点时不会记录它,而是仅限哪一个。同样,此类信息有特定的位置。根据这个帖子:
在 CyanogenMod 设备以及可能的其他 AOSP ROM 上,您应该能够从 /data/misc/wifi/wpa_supplicant.conf 文件中获取它。
在 Android 上访问任何系统级信息(包括上述引用的文件)都需要 root。
答案2
我连接到了哪些网络?
该iw
命令允许您获取已连接的网络:
iw dev <Interface> link
例如:
iw dev wlan0 link | grep SSID
或者使用 depriated 命令iwgetid
。
什么时候?
通过检查wpa_supplicant
以下事件syslog
:
# cat /var/log/syslog | grep wpa_supplicant
e,g :在具有 root 访问权限的 Android 上使用 termux 终端:
$ tsu
# logcat | grep -i wpa_supplicant