X-Git-Url: http://git.annexia.org/?a=blobdiff_plain;ds=sidebyside;f=fish%2Fguestfish.pod;h=c09dffc4689a39a6b39269bc29a36e007a639338;hb=14b66ed2a02e2f47b165034a86cb86691340db34;hp=5b641ead79389cc2242a6c39cdc6652288c3cda7;hpb=b70e5624f47e732ba7b226b90cbd4a99ddb115cc;p=libguestfs.git diff --git a/fish/guestfish.pod b/fish/guestfish.pod index 5b641ea..c09dffc 100644 --- a/fish/guestfish.pod +++ b/fish/guestfish.pod @@ -973,6 +973,38 @@ user ID of the process, and C<$PID> is the process ID of the server. Guestfish client and server versions must match exactly. +=head2 USING REMOTE CONTROL ROBUSTLY FROM SHELL SCRIPTS + +From Bash, you can use the following code which creates a guestfish +instance, correctly quotes the command line, handles failure to start, +and cleans up guestfish when the script exits: + + #!/bin/bash - + + set -e + + guestfish[0]="guestfish" + guestfish[1]="--listen" + guestfish[2]="--ro" + guestfish[3]="-a" + guestfish[4]="disk.img" + + GUESTFISH_PID= + eval $("${guestfish[@]}") + if [ -z "$GUESTFISH_PID" ]; then + echo "error: guestfish didn't start up, see error messages above" + exit 1 + fi + + kill_guestfish () + { + kill $GUESTFISH_PID >/dev/null 2>&1 ||: + } + trap kill_guestfish EXIT + + guestfish --remote run + # etc. + =head2 REMOTE CONTROL RUN COMMAND HANGING Using the C (or C) command remotely in a command @@ -1078,7 +1110,7 @@ This exits guestfish. You can also use C<^D> key. @ACTIONS@ -=head1 EXIT CODE +=head1 EXIT STATUS guestfish returns 0 if the commands completed without error, or 1 if there was an error.