为什么 Python3?
-
Shell 不适合某些复杂运算,尤其是 OpenWRT 用的 ash。
-
Lua 缺乏某些 SDK,比如说阿里云 SDK 就没有 Lua 版。
-
Python2 已经过时。
-
Node.js 在小型设备上不如 Python3 高效。
-
C、C++ 之流太难了!Go、Rust 还得编译,麻烦。
-
Perl、Ruby 已没落。
一个例子
当 IPv6 地址变化时,将地址发送到钉钉:https://github.com/UMU618/openwrt-ipv6-addresses
安装与调试
1. 安装可执行程序
1 | opkg install python3-base |
安装 python3-base
之后,就可以运行 python3
了。
1 | root@UMU:~# python3 |
用以下 Python 代码,打印目前已有的模块:
1 | import sys |
结果为:
1 | 1 sys built-in |
下面来实现获取 IPv6 地址的功能:
1 | def net_hex_to_ipv6(h): |
以上代码有个“美中不足”:只能打印地址的“首选格式”,不支持“压缩格式”。下面改进!
2. 安装轻量库
UMU 打算使用 socket 模块的工具函数格式化 IPv6 地址,但目前已安装的 python3-base
不带 socket 模块:
1 | import socket |
所以需要安装 python3-light
:
1 | opkg install python3-light |
装完即可愉快地玩耍:
1 | import socket |
以上代码打印:0618:0618:0618:0618:0000:0000:0000:0618 -> 618:618:618:618::618
。
3. 全量安装
如果 python3-light
还不能满足您,推荐来个全家桶:
1 | opkg install python3 |
PS: 不要以为只要上面这句就全装上了,前面的 opkg install python3-base
是必要的!如果只装 python3
,则 /usr/bin/python3
并不存在!
(完)