blob: 0ce8b427ba6e75359d417b58553e6fc3a8f4f374 (
plain) (
blame)
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
|
function mount_shares()
{
for (( CONFIGROW = 1; CONFIGROW < ${#ROHSHARES[@]}; CONFIGROW++ )); do
SHAREPATH=$(echo "${ROHSHARES[CONFIGROW]}" | cut -f 1 -d$'\t') # cifs- oder nfs-Share
SHARELETTER=$(echo "${ROHSHARES[CONFIGROW]}" | cut -f 2 -d$'\t' | \
sed 's/://g') # Laufwerksbuchstabe ohne :
SHARENAME=$(echo "${ROHSHARES[CONFIGROW]}" | cut -f 3 -d$'\t' | sed 's/ /_/g') # Leerzeichen raus.
SHAREUSER=$(echo "${ROHSHARES[CONFIGROW]}" | cut -f 4 -d$'\t') # Username, bei Userhome nicht vorhanden
SHAREPASS=$(echo "${ROHSHARES[CONFIGROW]}" | cut -f 5 -d$'\t') # User-PW, bei Userhome nicht vorhanden
# Sharetyp bestimmen:
if [ "${SHAREPATH:0:2}" == '\\' ] || [ "${SHAREPATH:0:2}" == '//' ]; then
USER=$(echo "$SHAREUSER"|cut -d '\' -f 2)
SHAREPATH="${SHAREPATH//\\//}" # '\' --> `/` :-)
MOUNTOPTS="$MOUNTOPTSCIFS"
else
MOUNTOPTS="$MOUNTOPTSNFS"
fi
# User-Homeverzeichnis?
if [ "${SHARENAME:0:5}" == "Home-" ]; then
logger "openslx sharemapper: home share \"$SHARENAME\" found (for PERSISTENT)."
export USER="${GLOBALUSER}"
export PASSWD="${PW}"
mounter "${MOUNTOPTS}" "${SHAREPATH}" "${USERHOMEDIR}" 2>/dev/null 1>&2
unset USER
unset PASSWD
else
if [ -z "${SHARELETTER}" ]; then
logger "openslx sharemapper: $SHARELETTER not found. Do not know where to mount."
continue
else
USERSHAREDIR="${USERHOME}"/SHARE_"${CONFIGROW}" # ROHSHARES: Zeilennummer; Shares >=1
if [ ! -d "$USERSHAREDIR" ]; then
mkdir -p "$USERSHAREDIR" 2>/dev/null
chown "$LOCALUSER":$(id --group "$LOCALUSER") "$USERSHAREDIR"
chmod 700 "$USERSHAREDIR"
logger "openslx sharemapper: share mount dir $USERSHAREDIR created."
fi
fi
# Wenn kein Homeverzeichnis, dann share zuerst mit den Credentials aus der share-Konfig
# versuchen zu mounten; wenn nicht, dann mit den Hauptcredentials nachversuchen.
logger "openslx sharemapper: non-home share \"$SHARENAME\" (${CONFIGROW}) found."
export USER="${SHAREUSER}"
export PASSWD="${SHAREPASS}"
mounter "${MOUNTOPTS}" ${SHAREPATH} ${USERSHAREDIR} 2>/dev/null 1>&2
ERR=$?
unset USER
unset PASSWD
if [ "$ERR" -eq 1 ]; then
export USER="${GLOBALUSER}"
export PASSWD="${PW}"
logger "openslx sharemapper: Could not mount ${USERSHAREDIR}, now trying using user credentials."
mounter "${MOUNTOPTS}" ${SHAREPATH} ${USERSHAREDIR} 2>/dev/null 1>&2
ERR=$? # ERR merken wg. Links aus USERSHAREDIR
if [ "$ERR" -eq 1 ]; then
logger "openslx sharemapper: Could not mount ${USERSHAREDIR} even using user credentials; giving up."
fi
unset USER
unset PASSWD
fi
if [ "$ERR" -eq 0 ]; then
logger "openslx sharemapper: Linking ${SHARELETTER} and $SHARENAME, if possible."
[ -n "${SHARELETTER}" ] && ln -s "$USERSHAREDIR" "${USERHOME}"/"$SHARELETTER"
[ -n "${SHARELETTER}" ] && ln -s "$USERSHAREDIR" "${USERHOME}"/"$SHARENAME"
fi
fi
done
}
|