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"