diff --git a/scripts/set_xva_bridge.sh b/scripts/set_xva_bridge.sh index 4f9eafd2..6aebe33e 100755 --- a/scripts/set_xva_bridge.sh +++ b/scripts/set_xva_bridge.sh @@ -12,23 +12,6 @@ usage() echo "----------------------------------------------------------------------------------------" } -# extract and read ova.xml -get_bridge() -{ - TMPFOLD=$(mktemp -d /tmp/xvaXXXX) - tar -xf "${XVA_NAME}" -C "${TMPFOLD}" ova.xml - chmod +r "${TMPFOLD}/ova.xml" - XML_VALUE=$(grep -oE "bridge[^<]*" "${TMPFOLD}/ova.xml") - LENGTH=${#XML_VALUE} - PREFIX_LENGTH=$((${LENGTH}-17)) - NETWORK_VALUE=$(cut -c 1-${PREFIX_LENGTH} <<< ${XML_VALUE}) - echo $(cut -c 35-${#NETWORK_VALUE} <<< ${NETWORK_VALUE}) - - if [ -d "${TMPFOLD}" ]; then - rm -Rf "${TMPFOLD}" - fi -} - # check parameters and prompt the usage if needed if [ -z "${1+set}" ] then @@ -70,43 +53,29 @@ else BRIDGE_VALUE=$3 fi -# we want to know the value of the network bridge. -# then we can decide if we need to change it or not. -BRIDGE_READVALUE=$(get_bridge) - -if [ -z "${BRIDGE_READVALUE}" ] -then - echo "No bridge value detected in the xml file!" - exit 1 -else - if [ "${BRIDGE_READVALUE}" == "${BRIDGE_VALUE}" ] - then - echo "The bridge is already ${BRIDGE_VALUE}. Nothing to do." - exit 0 - fi -fi - # we detect the compression method of the xva to uncompress it right -OLD_COMPRESSION=$(file "${XVA_NAME}" | cut -f 2 -d : | cut -f 2 -d " ") +OLD_COMPRESSION=$(file -b "${XVA_NAME}" | cut -f 1 -d " ") if [ "${OLD_COMPRESSION}" != "Zstandard" ] && [ "${OLD_COMPRESSION}" != "gzip" ] && [ "${OLD_COMPRESSION}" != "tar" ]; then echo "Error: unknown compression type detected for ${XVA_NAME}: ${OLD_COMPRESSION}" exit 1 fi -PATHFOLDER=$(dirname ${XVA_NAME}) +PATHFOLDER=$(dirname "${XVA_NAME}") TMPFOLDER=$(mktemp -d "${PATHFOLDER}"/xvaXXXX) +# extract and create the file list at the same time +TMP_LIST=$(mktemp "${PATHFOLDER}"/SortedListXXXX.txt) if [ -f "${XVA_NAME}" ]; then - tar -xf $1 -C "${TMPFOLDER}" + tar -xvf "${XVA_NAME}" -C "${TMPFOLDER}" > "${TMP_LIST}" else echo "Error: ${XVA_NAME} not found." exit 1 fi +chmod -R u+rX "${TMPFOLDER}" + if [ -e "${TMPFOLDER}/ova.xml" ]; then - chmod +rw "${TMPFOLDER}/ova.xml" - sed -i "s/bridge<\/name>[^<]*<\/value><\/member>/bridge<\/name>${BRIDGE_VALUE}<\/value><\/member>/g" ${TMPFOLDER}/ova.xml - chmod -rw "${TMPFOLDER}/ova.xml" + sed -i "s/bridge<\/name>[^<]*<\/value><\/member>/bridge<\/name>${BRIDGE_VALUE}<\/value><\/member>/g" "${TMPFOLDER}/ova.xml" else echo "Error: File ova.xml not found during the sed." exit 1 @@ -116,17 +85,11 @@ fi # save first file mv "${XVA_NAME}" "${XVA_NAME}.save" -# create xva -cd "${TMPFOLDER}" - # Create the new XVA -TMP_LIST=$(mktemp /tmp/SortedListXXXX.txt) -find . -print | cut -c3- | sort | grep -v "^Ref:[0-9]\+$" > ${TMP_LIST} -sudo tar -cv --${COMPRESS_METHOD} -f ${XVA_NAME} --no-recursion -T ${TMP_LIST} +tar -C "${TMPFOLDER}" --${COMPRESS_METHOD} -cf "${XVA_NAME}" --no-recursion -T "${TMP_LIST}" --numeric-owner --owner=:0 --group=:0 --mode=ugo= --mtime=@0 rm -f "${TMP_LIST}" # clean TMPFOLDER -cd .. if [ -d "${TMPFOLDER}" ]; then rm -Rf "${TMPFOLDER}" else