From 8dba10d138fa615f1c9e2783ede5395104be996a Mon Sep 17 00:00:00 2001 From: Christian Rößler Date: Tue, 10 Jul 2018 16:39:11 +0200 Subject: [run-virt] Linux scripts: shares mountes simultaneously (no wait while trying eg. cifs versions) --- .../vmchooser/data/linux/includes/10_functions.inc | 40 +++++++++++ .../data/linux/includes/30_mount_shares.inc | 79 ++++++++++++---------- 2 files changed, 85 insertions(+), 34 deletions(-) (limited to 'core/modules/run-virt/data/opt/openslx/vmchooser/data/linux') diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/10_functions.inc b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/10_functions.inc index 30b75efa..d6fd7caa 100644 --- a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/10_functions.inc +++ b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/10_functions.inc @@ -72,5 +72,45 @@ function mounter() return $AUSGANG } +function mount_share() +{ + 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 + # 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 "${MOUNTPARAM}" "${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 "${MOUNTPARAM}" "${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" + else + logger "openslx sharemapper: deleting previously creates share mount dir $USERSHAREDIR." + rmdir "$USERSHAREDIR" 2>/dev/null + fi +} + ### Funktionen Ende ############################### diff --git a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/30_mount_shares.inc b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/30_mount_shares.inc index 12f08af4..7fd3c73d 100644 --- a/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/30_mount_shares.inc +++ b/core/modules/run-virt/data/opt/openslx/vmchooser/data/linux/includes/30_mount_shares.inc @@ -1,3 +1,46 @@ +function mount_nothome() +{ + 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 "${MOUNTPARAM}" "${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 "${MOUNTPARAM}" "${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 +} + + function mount_shares() { for (( CONFIGROW = 1; CONFIGROW < ${#ROHSHARES[@]}; CONFIGROW++ )); do @@ -26,7 +69,7 @@ function mount_shares() logger "openslx sharemapper: home share \"$SHARENAME\" found (for PERSISTENT)." export USER="${GLOBALUSER}" export PASSWD="${PW}" - mounter "${MOUNTPARAM}" "${MOUNTOPTS}" "${SHAREPATH}" "${USERHOMEDIR}" 2>/dev/null 1>&2 + mounter "${MOUNTPARAM}" "${MOUNTOPTS}" "${SHAREPATH}" "${USERHOMEDIR}" 2>/dev/null 1>&2 & unset USER unset PASSWD else @@ -34,39 +77,7 @@ function mount_shares() 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 "${MOUNTPARAM}" "${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 "${MOUNTPARAM}" "${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" + mount_share & fi fi done -- cgit v1.2.3-55-g7522