我正在尝试使用 Python 3 脚本以 JSON 格式从我的 AVM FritzBox 7350 路由器(操作系统 7.57) 下载事件和 WLAN 日志。虽然它在我的 ArchLinux 机器上运行良好,但我在 Raspberry Pi 服务器(Raspbian Bullseye)上只得到一个 HTML 文件,没有明显的原因。两台机器都运行Python 3.12.4。
为了生成会话 ID (SID) 并登录,我依赖于此处AVM 技术说明中的代码。
生成 SID 并登录工作非常顺利。然后,我下载一个日志文件,例如'page=wSet' 或 'page=log',使用 python 子进程 调用 bash 'wget' 命令发送 POST 数据,如以下函数所示:
def download_log(sid: str) -> str:
cmd = 'wget -q -O - --post-data="sid='+sid+'&lang=de&page=wSet&no_sidrenew=" http://fritz.box/data.lua?version=2'
# .........................................................................V use system's UTF-8 encoding)
return str(subprocess.check_output(cmd, shell=True, executable="/bin/bash",text=True))
我将返回的字符串写入我的“日志文件”:
with open('./logfile','w') as logfile:
logfile.write(download_log(sid))
再次,在我的ArchLinux-System上工作得很好,并生成一个格式为JSON的文件,这是我在阅读了教程/英语谷歌翻译后所期望的。它很容易用“jq”来解析。
但是,当我在我的 Raspberry Pi 服务器(Raspbian 11(Bullseye))上运行非常相同的脚本时,我得到的只是一个页面的 HTML 文件,询问我是否要进入 FritzBox 界面[参见附图,不幸的是全是德语]...
从 Raspberry Pi 上的“wget”返回的 HTML 文件
在两个系统上Python 3.12.4均已成功安装。两者都通过 wifi 连接到 FritzBox。我不明白什么会导致两台机器上“wget”例程的不同行为。有人知道吗?
致以诚挚的问候,
.修补匠
我不知道有关不同行为的任何细节,但从版本
1.21(安装在Raspbian系统上)到1.24(安装在ArchLinux系统上)明显发生了变化。
只需获取并构建最新的“wget”版本,可以在此处找到。
命令
wget -q -O - --post-data="sid=XXXXXXXXXXXX&lang=de&page=wSet&no_sidrenew=" http://fritz.box/data.lua?version=2'
然后将从 FritzBox 返回 JSON 格式的 WLAN 活动日志。
确保您