Improved error handling

This commit is contained in:
Albrecht Lohofener
2025-01-09 13:43:50 +01:00
parent e273cc4528
commit ef246486a1
+8 -1
View File
@@ -78,18 +78,25 @@ while getopts ":hvrqsSVRc" option; do
[ -z "$PID" ] && exit 1
while true; do # Wait for command exit
RETURN_JSON=`echo '{"execute": "guest-exec-status", "arguments": { "pid": '${PID}'}}' | nc -w 1 -U /run/qga.sock`
#echo >&2 "RETURN_JSON: $RETURN_JSON"
export EXITCODE=`echo $RETURN_JSON | sed -n 's/.*"exitcode": \([0-9]*\).*/\1/p'`
export OUT_DATA=`echo $RETURN_JSON | sed -n 's/.*"out-data": "\([^"]*\).*/\1/p' | base64 -d`
export ERR_DATA=`echo $RETURN_JSON | sed -n 's/.*"err-data": "\([^"]*\).*/\1/p' | base64 -d`
export EXITED=`echo $RETURN_JSON | sed -n 's/.*"exited": \(true\|false\).*/\1/p'`
if [ "$EXITED" = "true" ]; then
break
fi
sleep 1
done
echo "$OUT_DATA" # Return stdout
if [ -n "$OUT_DATA" ]; then
echo "$OUT_DATA" # Return stdout
fi
if [ -z "$EXITCODE" ]; then # Exit code handling
exit 1
else
if [ $EXITCODE != 0 ]; then
echo >&2 "Command error \"$ERR_DATA\" (exit code \"$EXITCODE\")"
fi
exit "$EXITCODE"
fi;;
\?) # Invalid option