-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathdocker-client-script.sh
More file actions
executable file
·51 lines (40 loc) · 1.48 KB
/
docker-client-script.sh
File metadata and controls
executable file
·51 lines (40 loc) · 1.48 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#!/bin/env bash
# set -o xtrace
# Basic setup
SOCKET_FOLDER="/tmp/mu-docker-host-socket-dir"
SOCKET_IN="$SOCKET_FOLDER/in"
SOCKET_OUT="$SOCKET_FOLDER/out"
exec 10> "$SOCKET_IN"
exec 11< "$SOCKET_OUT"
# Send the command
echo "$@" >&10
read -u 11 COMMAND_OK
if [ "$COMMAND_OK" != "OK" ]
then
echo "ERROR: Not allowed to execute command" >&2
exit 254
else
# Read the relevant sockets
read -u 11 COMMAND_OUTPUT_STREAM_PATH
#echo "Read socket COMMAND_OUTPUT_STREAM_PATH $COMMAND_OUTPUT_STREAM_PATH" >&2
read -u 11 COMMAND_ERR_STREAM_PATH
#echo "Read socket COMMAND_ERR_STREAM_PATH $COMMAND_ERR_STREAM_PATH" >&2
read -u 11 COMMAND_INPUT_STREAM_PATH
#echo "Read socket COMMAND_INPUT_STREAM_PATH $COMMAND_INPUT_STREAM_PATH" >&2
read -u 11 COMMAND_EXIT_STREAM_PATH
#echo "Read socket $COMMAND_EXIT_STREAM_PATH" >&2
read -u 11 COMMAND_CLOSE_STREAM_PATH
# Close the streams we don't need anymore
exec 10>&-
exec 11>&-
# NOTE: trapping would likely be good but we did not test so we're clearing this for now
# trap 'exec 5>&- 6>&- 7>&- 8>&- 2>/dev/null | true' EXIT INT TERM
# Wire up our command
cat <$COMMAND_OUTPUT_STREAM_PATH & # stdout
cat <$COMMAND_ERR_STREAM_PATH >&2 & # stderr
cat </dev/null >$COMMAND_INPUT_STREAM_PATH & # stdin
#echo "Will read EXIT CODE" >&2
read -t 30 EXIT_CODE <$COMMAND_EXIT_STREAM_PATH # TODO: don't think we need -t 30
echo "DONE" >$COMMAND_CLOSE_STREAM_PATH
exit "$((EXIT_CODE))"
fi