diff --git a/bin/oglivecli b/bin/oglivecli index 13d873a..a46e06c 100755 --- a/bin/oglivecli +++ b/bin/oglivecli @@ -377,30 +377,54 @@ function install() { echo "Mounting SquashFS and checking Rsync version..." OGSQFS=$OGLIVEDIR/ogclient.sqfs - # Intentar montar SquashFS + echo "Attempting to mount SquashFS..." if mount -o loop,ro $OGSQFS $TMPDIR; then - # Obtener versiones de rsync + echo "Mounted SquashFS successfully." + RSYNCSERV=$(rsync --version 2>/dev/null | awk '/protocol/ {print $6}') RSYNCCLNT=$(chroot $TMPDIR /usr/bin/rsync --version 2>/dev/null | awk '/protocol/ {print $6}') + echo "RSYNCSERV: $RSYNCSERV" + echo "RSYNCCLNT: $RSYNCCLNT" - # Lógica para manejar rsync if [ -z "$RSYNCSERV" ] || [ "$RSYNCSERV" -gt "${RSYNCCLNT:-1}" ]; then - [ -e "$OPENGNSYS/client/bin/rsync-$RSYNCSERV" ] && \ - mv -f "$OPENGNSYS/client/bin/rsync-$RSYNCSERV" "$OPENGNSYS/client/bin/rsync" || \ - { echo "{\"error\": \"mv rsync failed.\"}"; umount $TMPDIR; exit 1; } + echo "Comparing server and client versions for rsync..." + if [ -e "$OPENGNSYS/client/bin/rsync-$RSYNCSERV" ]; then + echo "File exists: $OPENGNSYS/client/bin/rsync-$RSYNCSERV" + if mv -f "$OPENGNSYS/client/bin/rsync-$RSYNCSERV" "$OPENGNSYS/client/bin/rsync"; then + echo "Moved rsync successfully" + else + echo "{\"error\": \"mv rsync failed.\"}" + # Optional exit if moving rsync fails + exit 1 + fi + else + echo "File not found: $OPENGNSYS/client/bin/rsync-$RSYNCSERV" + echo "Rsync version $RSYNCSERV not found in $OPENGNSYS/client/bin. No action needed." + # No exit here, as this is not a critical error + fi else - [ -e "$OPENGNSYS/client/bin/rsync" ] && \ - mv -f "$OPENGNSYS/client/bin/rsync" "$OPENGNSYS/client/bin/rsync-$($OPENGNSYS/client/bin/rsync --version 2>/dev/null | awk '/protocol/ {print $6}')" || \ - { echo "{\"error\": \"mv rsync client failed.\"}"; umount $TMPDIR; exit 1; } + echo "Server rsync version is not greater, checking default rsync..." + if [ -e "$OPENGNSYS/client/bin/rsync" ]; then + echo "File exists: $OPENGNSYS/client/bin/rsync" + if mv -f "$OPENGNSYS/client/bin/rsync" "$OPENGNSYS/client/bin/rsync-$($OPENGNSYS/client/bin/rsync --version 2>/dev/null | awk '/protocol/ {print $6}')"; then + echo "Moved rsync client successfully" + else + echo "{\"error\": \"mv rsync client failed.\"}" + # Optional exit if moving rsync fails + exit 1 + fi + else + echo "File not found: $OPENGNSYS/client/bin/rsync" + echo "Default rsync not found in $OPENGNSYS/client/bin. No action needed." + # No exit here, as this is not a critical error + fi fi + echo "Unmounting SquashFS..." if umount $TMPDIR; then echo "Unmounted successfully" - # Espera antes de intentar eliminar el directorio sleep 1 - - # Intentar eliminar el directorio TMPDIR if rmdir $TMPDIR; then echo "Cleaned up successfully" else @@ -414,8 +438,17 @@ function install() { echo "{\"error\": \"mount SquashFS failed.\"}" fi - local json_output - json_output=$(jq -n --arg dist "$OGLIVEDIST" --arg krnl "$OGLIVEKRNL" --arg arch "$OGLIVEARCH" --arg rev "$OGLIVEREV" --arg dir "$OGLIVEDIR" --arg iso "$(basename "$OGLIVEFILE")" \ + echo "Updating JSON file..." + + + # Crear JSON output + json_output=$(jq -n \ + --arg dist "$OGLIVEDIST" \ + --arg krnl "$OGLIVEKRNL" \ + --arg arch "$OGLIVEARCH" \ + --arg rev "$OGLIVEREV" \ + --arg dir "$OGLIVEDIR" \ + --arg iso "$(basename "$OGLIVEFILE")" \ '{distribution: $dist, kernel: $krnl, architecture: $arch, revision: $rev, directory: $dir, iso: $iso}') echo "$json_output"