update_0.3
This commit is contained in:
+25
-28
@@ -1,21 +1,21 @@
|
||||
#!/bin/sh
|
||||
|
||||
CMD="$1"
|
||||
PKG_FILE="$2"
|
||||
HOT_REPLACE="$3"
|
||||
LOCAL_LST="$2"
|
||||
H_REPLACE="$3"
|
||||
|
||||
[ -z "$CMD" ] || [ -z "$PKG_FILE" ] || [ -z "$HOT_REPLACE" ] && echo "Missing params!" && exit 1
|
||||
[ -z "$CMD" ] || [ -z "$LOCAL_LST" ] || [ -z "$H_REPLACE" ] && echo "Missing params!" && exit 1
|
||||
|
||||
TMP_DIR="/tmp/opkg_restore"
|
||||
|
||||
fix_dns() {
|
||||
local dns1="1.1.1.1"
|
||||
local dns2="1.0.0.1"
|
||||
|
||||
if ! grep -q "$dns1" /etc/resolv.conf; then
|
||||
echo " [+] Patching DNS for restore..."
|
||||
printf "Patching DNS for restore... "
|
||||
sed -i "1i nameserver $dns1" /etc/resolv.conf
|
||||
sed -i "2i nameserver $dns2" /etc/resolv.conf
|
||||
echo "OK"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -28,7 +28,6 @@ BEGIN {
|
||||
FLASH_TIME = substr(line, 17)
|
||||
}
|
||||
close(cmd)
|
||||
|
||||
while ((getline < status_file) > 0) {
|
||||
if ($1 == "Package:") { pkg = $2 }
|
||||
if ($1 == "Installed-Time:") {
|
||||
@@ -47,42 +46,39 @@ EOF
|
||||
|
||||
case "$CMD" in
|
||||
write)
|
||||
mkdir -p "$(dirname "$PKG_FILE")"
|
||||
echo "Scanning for user-installed packages..."
|
||||
|
||||
> "$PKG_FILE"
|
||||
|
||||
mkdir -p "$(dirname "$LOCAL_LST")"
|
||||
echo "Package list:"
|
||||
> "$LOCAL_LST"
|
||||
for pkg in $(list_user_packages); do
|
||||
echo "$pkg" >> "$PKG_FILE"
|
||||
echo "$pkg" >> "$LOCAL_LST"
|
||||
echo " [+] $pkg"
|
||||
done
|
||||
|
||||
echo "Total $(wc -l < "$PKG_FILE") packages saved to $PKG_FILE"
|
||||
;;
|
||||
|
||||
restore)
|
||||
[ ! -f "$PKG_FILE" ] && echo "File not found!" && exit 1
|
||||
[ ! -f "$LOCAL_LST" ] && echo "File not found!" && exit 1
|
||||
|
||||
[ ! -f /etc/resolv.conf-backup ] && cp /etc/resolv.conf /etc/resolv.conf-backup
|
||||
fix_dns
|
||||
|
||||
echo "Updating package lists..."
|
||||
printf "Updating package lists... "
|
||||
opkg update >/dev/null 2>&1
|
||||
|
||||
echo "Phase 1: Removing conflicts ($HOT_REPLACE)..."
|
||||
if [ -n "$HOT_REPLACE" ]; then
|
||||
REMOVABLE=$(opkg list-installed | grep -E $(echo "$HOT_REPLACE" | tr ' ' '|') | awk '{print $1}')
|
||||
echo "OK"
|
||||
echo "Removing conflicts:"
|
||||
if [ -n "$H_REPLACE" ]; then
|
||||
REMOVABLE=$(opkg list-installed | grep -E $(echo "$H_REPLACE" | tr ' ' '|') | awk '{print $1}')
|
||||
for p in $REMOVABLE; do
|
||||
printf " [-] %s... " "$p"
|
||||
opkg remove "$p" --force-depends >/dev/null 2>&1
|
||||
echo "OK"
|
||||
done
|
||||
fi
|
||||
|
||||
echo "Phase 2: Installing packages from list..."
|
||||
for pkg in $(cat "$PKG_FILE"); do
|
||||
echo "Installing packages:"
|
||||
for pkg in $(cat "$LOCAL_LST"); do
|
||||
if opkg list-installed | grep -q "^$pkg "; then
|
||||
echo " [s] $pkg is already installed"
|
||||
echo " [s] $pkg... is already installed"
|
||||
else
|
||||
fix_dns
|
||||
printf " [+] Installing $pkg... "
|
||||
printf " [+] $pkg... "
|
||||
if opkg install "$pkg" >/dev/null 2>&1; then
|
||||
echo "OK"
|
||||
else
|
||||
@@ -90,8 +86,9 @@ case "$CMD" in
|
||||
fi
|
||||
fi
|
||||
done
|
||||
|
||||
[ -f /etc/resolv.conf-backup ] && mv /etc/resolv.conf-backup /etc/resolv.conf
|
||||
echo "Restore complete. Reboot is recommended."
|
||||
echo "Summary:"
|
||||
echo " Restore complete."
|
||||
echo " Reboot is recommended."
|
||||
;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user