BusyBox 网络工具 ifconfig wget nc httpd 全解析
网络工具清单
BusyBox 内置的网络相关 Applet 包括:
| 命令 | 用途 | 典型场景 |
|---|---|---|
| ifconfig | 配置网卡 IP/MAC | 嵌入式设备网络配置 |
| route | 管理路由表 | 设置默认网关 |
| nc (netcat) | TCP/UDP 调试 | 端口连通性测试、简单数据传输 |
| wget | HTTP/FTP 下载 | 从互联网下载固件或配置 |
| httpd | 简单 HTTP 服务器 | 提供设备 Web 管理界面 |
| telnet | 远程登录 | 网络调试 |
| nslookup | DNS 查询 | 验证域名解析 |
| ping | ICMP 测试 | 网络连通性验证 |
| ip | 现代网络配置(部分支持) | 替代 ifconfig 的新工具 |
| udhcpc | DHCP 客户端 | 自动获取 IP |
ifconfig 使用
# 查看所有网卡配置
busybox ifconfig
# 设置 IP 地址和子网掩码
busybox ifconfig eth0 192.168.1.100 netmask 255.255.255.0
# 启用/禁用网卡
busybox ifconfig eth0 up
busybox ifconfig eth0 down
# 设置 MAC 地址(需要 root)
busybox ifconfig eth0 hw ether 00:11:22:33:44:55
# 设置 MTU
busybox ifconfig eth0 mtu 1400
BusyBox ifconfig 比 GNU 版简单,不支持地址别名、硬件类型切换等高级功能。日常配置 IP/MAC/MTU 没问题。
wget 的局限性
BusyBox wget 是一个极简实现:
- 支持 HTTP、HTTPS、FTP
- 不支持 递归下载(
-r) - 不支持 断点续传(
-c)——除非特定版本编译时开了CONFIG_FEATURE_WGET_LONG_OPTIONS - 支持基本的代理配置
# 下载单个文件
busybox wget -O firmware.bin http://example.com/firmware.bin
# 带超时和重试
busybox wget -T 30 -t 3 http://example.com/file
# 简单的 POST 请求(不完整)
busybox wget --post-data='key=value' -O - http://example.com/api
需要完整 wget/curl 功能时,要么在编译时开启所有选项,要么用替代方案——嵌入式场景通常用 curl 的静态编译二进制(体积约 300KB)。
nc(netcat)调试利器
nc 是 BusyBox 中最实用的网络调试工具,经常用来测试端口连通性:
# 测试 TCP 端口连通
busybox nc -zv 192.168.1.1 80
# 成功输出:Connection to 192.168.1.1 80 port [tcp/http] succeeded!
# 作为简单服务端(监听端口)
busybox nc -l -p 8080
# 发送简单数据
echo "hello" | busybox nc -w 3 host port
# 扫描端口范围(虽然慢但够用)
for port in 22 80 443 8080; do
busybox nc -zv host $port 2>&1
done
httpd 轻量 HTTP 服务
BusyBox httpd 是一个不到 50KB 的微型 HTTP 服务器,适合为设备提供简单的 Web 管理界面:
# 从当前目录提供静态文件
busybox httpd -p 80
# 指定文档根目录
busybox httpd -p 80 -h /var/www
# 设置用户名密码(htpasswd 格式)
busybox httpd -p 80 -r .htpasswd
# 作为 daemon 后台运行
busybox httpd -p 80 -h /var/www
# 默认就是后台模式,用 -f 可以前台运行调试
httpd 支持 CGI(通过 -c 指定 CGI 目录),这意味着你可以用 Shell 脚本写简单的动态页面——这是很多嵌入式设备 Web 管理界面的实现方式。