add share.sh to demonstrate usage from the shell
This commit is contained in:
parent
aa1ee1d0ad
commit
8c5bd53ba0
36
share.sh
Executable file
36
share.sh
Executable file
|
@ -0,0 +1,36 @@
|
|||
#!/bin/bash
|
||||
# Share data to a running Shrlok instance.
|
||||
|
||||
usage() {
|
||||
echo "Usage: $0 [-s SOCKET_PATH] [] TYPE FILE"
|
||||
}
|
||||
|
||||
socket_path="/run/shrlok/shr.sock"
|
||||
while getopts "hs:" OPTION; do
|
||||
case $OPTION in
|
||||
h) usage; exit 0 ;;
|
||||
s) socket_path="$OPTARG" ;;
|
||||
*) usage; exit 1 ;;
|
||||
esac
|
||||
done
|
||||
shift $(( OPTIND - 1 ))
|
||||
[ $# != 2 ] && usage && exit 1
|
||||
|
||||
share_type="$1"
|
||||
input_file="$2"
|
||||
|
||||
if [ ! -S "$socket_path" ]; then
|
||||
echo "$socket_path is not a valid Unix socket. Is shrlok running?"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# The first thing sent through the socket is the total packet length, as ASCII
|
||||
# digits for the convenience of scripts. Build the header before hand to get its
|
||||
# size, then get the file length and push everything to the socket with socat.
|
||||
header="{\"type\":\"$share_type\"}"
|
||||
header_length="${#header}"
|
||||
file_length="$(wc -c "$input_file" | cut -d' ' -f1)"
|
||||
full_length="$(( $header_length + 1 + $file_length ))"
|
||||
|
||||
cat <(printf "${full_length}\x00${header}\x00") "$input_file" \
|
||||
| socat - UNIX-CONNECT:"$socket_path" ; echo
|
Reference in a new issue