恩山无线论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 336|回复: 3

【自动脚本】【伪AC】多台 OpenWRT 路由器之间自动同步配置脚本

[复制链接]
发表于 2020-8-8 15:54 | 显示全部楼层 |阅读模式
有时候场景中会出现多台 OpenWRT 设备,有些设置都是相同的
比如无线名称。商业化有 ACAP 方案,家用也有集客 AC 方案

尽管如此,我还是因为自己的需求写了个同步脚本,只支持单向同步


一、主AP的设置
开启 SSH,允许内网通过密码访问,为了安全,你可以新建一个非 root 用户

二、次AP的准备工作
1. 安装 sshpass
  1. opkg update
  2. opkg install sshpass
复制代码
2. 在 /usr/sbin 里面新建 rucisync 文件并输入下面内容
REMOTE_开头的参数修改为主 AP 的信息
然后按自己的需求定制 #__update_wireless__ 之后的[size=15.2381px]内容
[size=15.2381px]文中给了一个 小米路由器 向 OpenWRT 同步的例子
  1. #!/bin/sh
  2. REMOTE_IPADDR=192.168.31.1
  3. REMOTE_USER=root
  4. REMOTE_PASS=********
  5. UCI_UPDATE_FLAG=0

  6. download_config() {
  7.     mkdir -p /tmp/remote_uci
  8.     sshpass -p $REMOTE_PASS  ssh $REMOTE_USER@$REMOTE_IPADDR cat /etc/config/$1 > /tmp/remote_uci/$1
  9. }

  10. xuci() {
  11.     echo $(uci -c /tmp/remote_uci $*)
  12. }

  13. key_sync() {
  14.     rk=$1   #__remote_key__
  15.     lk=$2   #__local_key__
  16.     rv=$(uci -c /tmp/remote_uci get $rk)    #__remote_value__
  17.     lv=$(uci get $lk)                       #__local_value__
  18.    
  19.     if [ "$rv" == "" ]; then
  20.         echo -e "[$rk => $lk]\n\t remote value reading failed, break."
  21.         return 1
  22.     fi
  23.    
  24.     if [ "$lv" == "$rv" ]; then
  25.         echo -e "[$rk => $lk]\n\t no changes, break."
  26.         return 0
  27.     else
  28.         uci set "$lk=$rv"
  29.         echo -e "[$rk => $lk]\n\t uci key updated."
  30.         UCI_UPDATE_FLAG=1
  31.     fi
  32. }

  33. # EXAMPLE
  34. # download_config ${remote_uci_config}
  35. # UCI_UPDATE_FLAG=0
  36. # key_sync ${remote_uci_key} ${local_uci_key}
  37. # if [ $UCI_UPDATE_FLAG -eq 1 ]; then
  38. #     uci commit ${local_uci_config}
  39. #     ${post_command}
  40. # fi

  41. #__update_wireless__
  42. download_config wireless
  43. UCI_UPDATE_FLAG=0
  44. key_sync wireless.@wifi-iface[0].ssid wireless.wifinet0.ssid
  45. key_sync wireless.@wifi-iface[0].key wireless.wifinet0.key
  46. key_sync wireless.mt7612.channel wireless.radio0.channel
  47. key_sync wireless.@wifi-iface[1].ssid wireless.wifinet1.ssid
  48. key_sync wireless.@wifi-iface[1].key wireless.wifinet1.key
  49. key_sync wireless.mt7620.channel wireless.radio1.channel
  50. if [ $UCI_UPDATE_FLAG -eq 1 ]; then
  51.     uci commit wireless
  52.     wifi down && wifi up
  53.     echo "wifi restarted for applying new settings."
  54. fi
复制代码
3. 给 rucisync 赋予可执行权限
  1. chmod 0755 /usr/sbin/rucisync
复制代码
4. 创建计划任务(可以按需求更改)
  1. */5 * * * * /usr/sbin/rucisync
复制代码
5. 完工

脚本也可以不需要主 AP,可以用 HTTP 或者 FTP 服务器代替,单要简单修改脚本
本文主要是给个思路

最后希望有用就回复一下,感谢
游客,如果您要查看本帖隐藏内容请回复


我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-8-9 17:27 | 显示全部楼层
反复刷机太必要了,谢谢。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-8-9 22:39 | 显示全部楼层
支持楼主。。。。。。
我的恩山、我的无线 The best wifi forum is right here.
发表于 2020-8-22 09:48 来自手机 | 显示全部楼层
感谢楼主的贡献
我的恩山、我的无线 The best wifi forum is right here.
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )|网站地图

GMT+8, 2020-9-27 04:18

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表