Добавить uci_bkp.sh
This commit is contained in:
+123
@@ -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"
|
||||
Reference in New Issue
Block a user