|
|
来源于Deepseed,仅供参考。
在OpenWRT路由器上实现插入网线自动设置静态IP和安装CUPS识别打印机,可以通过以下脚本和配置实现:
### 一、自动设置静态IP(当网线插入时)
1. 创建热插拔脚本(适用于有线接口,通常是eth0或br-lan):
```bash
cat << "EOF" > /etc/hotplug.d/iface/99-set-static-ip
#!/bin/sh
[ "$ACTION" = "ifup" -a "$INTERFACE" = "lan" ] || exit 0
# 等待接口完全启动
sleep 5
# 检查物理连接状态
if [ $(cat /sys/class/net/eth0/carrier 2>/dev/null) -eq 1 ]; then
# 设置静态IP
uci set network.lan.proto='static'
uci set network.lan.ipaddr='192.168.1.1' # 改为你需要的IP
uci set network.lan.netmask='255.255.255.0'
uci set network.lan.gateway='192.168.1.254' # 如有需要
uci set network.lan.dns='8.8.8.8 8.8.4.4' # 如有需要
uci commit network
/etc/init.d/network restart
fi
EOF
chmod +x /etc/hotplug.d/iface/99-set-static-ip
```
### 二、安装和配置CUPS(打印机服务器)
1. 安装必要软件包:
```bash
opkg update
opkg install cups cups-filters usbutils libusb-1.0
```
2. 创建打印机热插拔检测脚本:
```bash
cat << "EOF" > /etc/hotplug.d/usb/10-usb-printer
#!/bin/sh
[ "$ACTION" = "add" -a "$(lsusb | grep -i 'printer')" ] || exit 0
# 等待打印机被识别
sleep 5
# 检查并启动CUPS服务
if [ -z "$(pidof cupsd)" ]; then
/etc/init.d/cups start
fi
# 自动添加打印机(可能需要根据实际情况调整)
PRINTER_URI=$(lpinfo -v | grep -m1 'usb://' | awk '{print $2}')
if [ -n "$PRINTER_URI" ]; then
lpadmin -p OpenWRT_Printer -v "$PRINTER_URI" -E -m everywhere
fi
EOF
chmod +x /etc/hotplug.d/usb/10-usb-printer
```
3. 配置CUPS:
```bash
# 允许局域网访问
sed -i 's/Listen localhost:631/Listen 0.0.0.0:631/' /etc/cups/cupsd.conf
# 添加管理权限(可选)
echo "SystemGroup root" >> /etc/cups/cupsd.conf
# 启动服务
/etc/init.d/cups enable
/etc/init.d/cups start
```
### 三、注意事项
1. 网络接口名称可能需要调整(如eth0/br-lan等),用`ifconfig`查看实际接口名
2. 静态IP设置会覆盖原有配置,请确保:
- 备份原始配置:`cp /etc/config/network /etc/config/network.bak`
- 避免IP冲突
3. 打印机支持:
- 部分打印机可能需要额外驱动:`opkg install printer-driver-*`
- 检查打印机是否被识别:`lsusb` 和 `lpinfo -v`
4. 首次访问CUPS管理界面:
- 浏览器访问:`http://路由器IP:631`
- 可能需要安装客户端软件包:`opkg install avahi-daemon`
5. 日志查看:
```bash
logread -f # 查看系统日志
tail -f /var/log/cups/error_log # CUPS专用日志
```
### 四、完整流程测试
1. 插入网线 → 等待30秒 → 检查`ifconfig`确认IP已设置
2. 插入打印机 → 等待30秒 → 检查`lpstat -t`查看打印机状态
3. 从局域网计算机尝试打印测试页
如果需要更复杂的自动化(如多网络环境判断或特定打印机配置),可以进一步扩展脚本逻辑。 |
|