diff options
author | Simon Rettberg | 2014-06-03 16:47:36 +0200 |
---|---|---|
committer | Simon Rettberg | 2014-06-03 16:47:36 +0200 |
commit | 32dc5354e2916387a2c62eadae0a4568023f1151 (patch) | |
tree | 7fd9a0173d6073e86d1d48e545646b1bc8c1a5eb /scripts/mount-store | |
download | tmlite-bwlp-32dc5354e2916387a2c62eadae0a4568023f1151.tar.gz tmlite-bwlp-32dc5354e2916387a2c62eadae0a4568023f1151.tar.xz tmlite-bwlp-32dc5354e2916387a2c62eadae0a4568023f1151.zip |
Initial commit
Diffstat (limited to 'scripts/mount-store')
-rwxr-xr-x | scripts/mount-store | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/scripts/mount-store b/scripts/mount-store new file mode 100755 index 0000000..1291d1a --- /dev/null +++ b/scripts/mount-store @@ -0,0 +1,82 @@ +#!/bin/bash + +if [ $# -lt 2 ]; then + echo "Bad call to $0." >&2 + echo "Expected: $0 images <source> [username] [password]" >&2 + exit 1 +fi + +WHAT="$1" +SOURCE="$2" +USERNAME="$3" +PASSWORD="$4" + +# Currently WHAT can only be images (the central store for all images), +# but maybe there will be other storage types in the future. +case "$WHAT" in +images) + DEST="/opt/openslx/nfs" + ;; +*) + echo "Invalid/Unknown mount type: '$WHAT'." >&2 + exit 1 + ;; +esac + +# Sanity checks: Destination exists? +if [ ! -d "$DEST" ]; then + mkdir -p "$DEST" + chown root:images "$DEST" + chmod 0775 "$DEST" +fi + +# Still a no? +if [ ! -d "$DEST" ]; then + echo "Mount point '$DEST' does not exist and could not be created!" >&2 + echo "This should not happen and means this server is severely messed up. :(" >&2 + exit 1 +fi + +# Already mounted? +if awk '{print $2}' "/proc/mounts" | grep -q "^${DEST}\$"; then + echo "Trying to unmount '$DEST'..." + umount -v "$DEST" + RET=$? + if [ "$RET" -ne "0" ]; then + echo "Cannot unmount '$DEST'!" >&2 + exit "$RET" + fi +fi + +# Unmount and not requested to mount (local mode) +if [[ "${SOURCE}" == "null" ]]; then + rm -f "${DEST}/.notmounted" + exit 0 +fi + +touch "${DEST}/.notmounted" + +# Mount! + +if grep -E -q '^[^/].+:.+' <<<$SOURCE; then + # seems to be NFS + mount -t nfs -o rw,async,nolock,fg,ac,retry=1,timeo=600 "$SOURCE" "$DEST" + RET=$? +elif grep -E -q '^//' <<<$SOURCE; then + # seens to be SMB + export USER="$USERNAME" + export PASSWD="$PASSWORD" + mount -t cifs -o rw,uid=0,gid=12345,forceuid,forcegid,file_mode=0664,dir_mode=0775,sec=ntlm "$SOURCE" "$DEST" + RET=$? + unset USER PASSWD +else + echo "Unknown mount type: $SOURCE" + exit 1 +fi + +if [ "$RET" == "0" ]; then + chmod -R ug+rw "$DEST" +fi + +exit $RET + |