From 442deff9c347aa4c31c2fa79810344fa85402c6b Mon Sep 17 00:00:00 2001 From: Albrecht Lohofener Date: Thu, 9 Jan 2025 16:37:05 +0100 Subject: [PATCH] Fix issue when shell command becomes to long. --- src/qemu_qmp.sh | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/qemu_qmp.sh b/src/qemu_qmp.sh index 2070cac..d173e72 100644 --- a/src/qemu_qmp.sh +++ b/src/qemu_qmp.sh @@ -71,17 +71,17 @@ while getopts ":hvrqsSVRc" option; do exit;; c) # Run shell command inside OpenWrt, package qemu-ga needs to be installed # Execute command in OpenWrt - INPUT_DATA=`echo "$2" | base64` + INPUT_DATA=`echo "$2" | base64 -w 0` RETURN_JSON=`echo '{"execute": "guest-exec", "arguments": { "path": "/bin/sh", "input-data": "'${INPUT_DATA}'", "capture-output": true }}' | nc -w 1 -U /run/qga.sock` PID=`echo $RETURN_JSON | sed -n 's/.*"pid": \([0-9]*\).*/\1/p'` # Process return and extract PID - #echo >&2 "PID: $PID" - [ -z "$PID" ] && exit 1 + #echo >&2 "RETURN_JSON: $RETURN_JSON" + [ -z "$PID" ] && echo >&2 "Command error: PID is empty! RETURN_JSON: $RETURN_JSON" && 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 OUT_DATA=`echo $RETURN_JSON | sed -n 's/.*"out-data": "\([^"]*\).*/\1/p' | base64 -d -w 0` + export ERR_DATA=`echo $RETURN_JSON | sed -n 's/.*"err-data": "\([^"]*\).*/\1/p' | base64 -d -w 0` export EXITED=`echo $RETURN_JSON | sed -n 's/.*"exited": \(true\|false\).*/\1/p'` if [ "$EXITED" = "true" ]; then break