-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathvmount.in
100 lines (94 loc) · 1.67 KB
/
vmount.in
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
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
#!/bin/sh
#
# Volume manager CLI client
# version 0.7
set -e
if [ -r %%PREFIX%%/etc/volman.conf ]; then
. %%PREFIX%%/etc/volman.conf
fi
: ${WRKDIR:=/tmp/volman}
i=0
while [ ! -e ${WRKDIR}/fifo.vmount -a ${i} -lt 3 ]; do
i=$((${i}+1))
echo "vmount SUBSCRIBE" >${WRKDIR}/fifo.volmand
sleep 0.5
done
echo "vmount VOLUMES" >${WRKDIR}/fifo.volmand
if [ ${#} -eq 1 ]; then
DOMOUNT="${1}"
fi
while read RESP DATA <&3; do
case "${RESP}" in
VOLUME)
set -- ${DATA}
if [ "${1}" = "LIST" ]; then
case "${2}" in
m)
out="[m]"
if [ "${DOMOUNT}" = "${3}" ]; then
echo -n "umounting ${3}... "
echo "vmount UMOUNT ${3}" >${WRKDIR}/fifo.volmand
fi
;;
u)
out="[u]"
if [ "${DOMOUNT}" = "${3}" ]; then
echo -n "mounting ${3}... "
echo "vmount MOUNT ${3}" >${WRKDIR}/fifo.volmand
fi
;;
END)
if [ -n "${DOMOUNT}" ]; then
continue
else
break
fi
;;
esac
if [ -z "${DOMOUNT}" ]; then
size=${5}
unit=B
while [ ${size} -gt 1000 ]; do
size=$((${size} / 1000))
case "${unit}" in
B) unit=KB ;;
KB) unit=MB ;;
MB) unit=GB ;;
GB) unit=TB ;;
TB) unit=PB ;;
esac
done
out="${out} ${3} ${4} ${size}${unit}"
if [ ${#} -gt 5 ]; then
shift 5
out="${out} ${*}"
fi
echo ${out}
fi
fi
;;
ERROR)
echo ERROR: ${DATA}
break
;;
MOUNT)
set -- ${DATA}
if [ "${1}" = "${DOMOUNT}" ]; then
shift
echo success: ${*}
fi
break
;;
UMOUNT)
set -- ${DATA}
if [ "${1}" = "${DOMOUNT}" ]; then
shift
echo success
fi
break
;;
PING)
echo "vmount PONG" >${WRKDIR}/fifo.volmand
;;
esac
done 3<${WRKDIR}/fifo.vmount