From b0253576e3f4362efcd3c6ae52ab1d52b06fe20b Mon Sep 17 00:00:00 2001 From: adminer Date: Sat, 25 Apr 2026 10:53:09 +0300 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20uci=5Fbkp.sh?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- uci_bkp.sh | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 123 insertions(+) create mode 100644 uci_bkp.sh diff --git a/uci_bkp.sh b/uci_bkp.sh new file mode 100644 index 0000000..beaa112 --- /dev/null +++ b/uci_bkp.sh @@ -0,0 +1,123 @@ +#!/bin/bash + +set -e + +ROUTER_HOST="${ROUTER_HOST}" +ROUTER_USER="${ROUTER_USER}" +ROUTER_PASS="${ROUTER_PASS}" + +ROUTER_USER=root +ROUTER_HOST=172.16.111.7 +ROUTER_PASS=556667777 + + +BACKUP_NAME="wrt-bkp-$ROUTER_HOST-$(date +%F).sh" + +FILES="/etc/mosquitto /etc/bird" + +if ! command -v sshpass &> /dev/null; then + sudo apt update && sudo apt install -y sshpass +fi + +echo "# [*] Creating backup on router..." + +#sshpass -p "$ROUTER_PASS" ssh -o StrictHostKeyChecking=no $ROUTER_USER@$ROUTER_HOST << 'EOH' +sshpass -p "$ROUTER_PASS" ssh -o StrictHostKeyChecking=no \ + "$ROUTER_USER@$ROUTER_HOST" \ + "lFILES='$FILES'" 'sh -s' << 'EOH' >> "$BACKUP_NAME" +# Create OpenWRT uci-defaults file for image builder +target=$(sed -n 1p /etc/opkg/distfeeds.conf | cut -d'/' -f8) +soc=$(sed -n 1p /etc/opkg/distfeeds.conf | cut -d'/' -f9) +arch=$(sed -n 2p /etc/opkg/distfeeds.conf | cut -d'/' -f8) +model=$(cat /tmp/sysinfo/model) +profile=$(cat /tmp/sysinfo/board_name | sed 's/,/_/') +#script="/tmp/99-custom" +echo "#profile = $profile" +echo "#target = $target" +echo "#soc = $soc" +echo "#arch = $arch" +echo "#$model custom default settings" + +gen_pack() { +echo '#----------------------------------------------------' +echo '#Generating cmd for install pkg' +echo '#----------------------------------------------------' + +grep -A3 "Package:" /usr/lib/opkg/status | awk ' +/Package:/ { pkg=$2 } +/Status:/ { + if ($0 ~ /user installed/) { + print "opkg install " pkg + } +}' + +} + +gen_conf() { +echo '#----------------------------------------------------' +echo "#Generating custom default file for $model" +echo '#----------------------------------------------------' +echo "uci -q batch << EOI" +for section in $(uci show 2>/dev/null | awk -F. '{print $1}' | sort -u); do +uci show "$section" | awk -F. '{print "set "$0}' +echo "commit $section" +done +echo "EOI" +# >> "$script" +#chmod 755 "$script" +#echo "Created $script". +#echo Now transfer the file to the 'files/etc/uci-defaults/' folder in your image builder directory. + +} + + +gen_confile() { +echo "" + +_process_file() { + local file="$1" + local dir + dir=$(dirname "$file") + + echo "#Gen file $file" + echo '' + echo "mkdir -p \"$dir\"" + + echo "cat << 'CFGEOF' > \"$file\"" + cat "$file" 2>/dev/null + echo "CFGEOF" + echo "" +} + +for path in $@; do + if [ -d "$path" ]; then + echo "mkdir -p \"$path\"" + echo "" + + # КЛЮЧЕВОЕ ИСПРАВЛЕНИЕ: -print0 + read -d '' + find "$path" -print0 | while IFS= read -r -d '' item; do + if [ -d "$item" ]; then + echo "mkdir -p \"$item\"" + echo "" + elif [ -f "$item" ]; then + _process_file "$item" + fi + done + + elif [ -f "$path" ]; then + _process_file "$path" + + else + echo "# WARNING: $path не существует" + fi +done + +} +gen_pack +gen_conf +gen_confile $lFILES + + +EOH + +echo "# [*] Finish"