]> oss.titaniummirror.com Git - ovzbpc.git/blobdiff - esata
Merge the old svn esata repo, whose history is in the esata branch.
[ovzbpc.git] / esata
diff --git a/esata b/esata
new file mode 100755 (executable)
index 0000000..130eb80
--- /dev/null
+++ b/esata
@@ -0,0 +1,110 @@
+#!/bin/bash
+
+DEV=/dev/sdb2
+MNT=/media/esata
+DELAY=5
+SCSIDEV=1 # This can change based on OS, etc.
+
+registered() {
+    if [ -b "$DEV" ]; then
+       [ -n "$VERBOSE" ] && echo "registered"
+       return 0
+    else
+       [ -n "$VERBOSE" ] && echo "not registered"
+       return 1
+    fi
+}
+
+mounted() {
+    if mount | grep -q "$MNT"; then
+       [ -n "$VERBOSE" ] && echo "mounted"
+       return 0
+    else
+       [ -n "$VERBOSE" ] && echo "not mounted"
+       return 1
+    fi
+}
+
+doregister() {
+    registered && return 0
+    [ -n "$VERBOSE" ] && echo "register SATA device"
+    scsiadd -a $SCSIDEV 0 0 0 >/dev/null || return 1
+    sleep $DELAY
+    registered || return 1
+    [ -n "$VERBOSE" ] && echo "register ok"
+    return 0
+}
+
+domount() {
+    mounted && return 0
+    doregister || return 1
+    [ -n "$VERBOSE" ] && echo "mount SATA $DEV"
+    mkdir -p "$MNT" || return 1
+    mount "$DEV" "$MNT" || return 1
+    [ -n "$VERBOSE" ] && echo "mount ok"
+    return 0
+}
+
+dounregister() {
+    registered || return 0
+    [ -n "$VERBOSE" ] && echo "unregister SATA device"
+    scsiadd -r $SCSIDEV 0 0 0 >/dev/null || return 1
+    sleep $DELAY
+    registered && return 1
+    [ -n "$VERBOSE" ] && echo "unregister ok"
+    return 0
+}
+
+doumount() {
+    if mounted; then
+       [ -n "$VERBOSE" ] && echo "unmount SATA $DEV"
+       umount "$MNT" || return 1
+       mounted && return 1
+       [ -n "$VERBOSE" ] && echo "unmount ok"
+    fi
+    dounregister || return 1
+    return 0
+}
+
+# MAIN
+
+unset VERBOSE
+if [ "$1" = "-v" ]; then
+    VERBOSE=1
+    shift
+fi
+if [ "$1" = "mount" ]; then
+    if domount; then
+       echo "esata mounted on $MNT"
+    else
+       echo "$0: cannot mount esata" >&2
+       dounregister
+    fi
+elif [ "$1" = "umount" -o "$1" = "unmount" ]; then
+    if doumount; then
+       echo "esata is unmounted"
+    else
+       echo "$0: cannot unmount esata" >&2
+       exit 1
+    fi
+elif [ "$1" = "register" ]; then
+    if doregister; then
+       echo "esata registered as $DEV"
+    else
+       echo "$0: cannot register esata" >&2
+       exit 1
+    fi
+elif [ "$1" = "status" ]; then
+    if mounted; then
+       echo "esata mounted on $MNT"
+    elif registered; then
+       echo "esata registered as $DEV but not mounted"
+    else
+       echo "esata is unregistered"
+    fi
+    #mount | grep "$DEV"
+    #scsiadd -p | grep "scsi1"
+else
+    echo "usage: $0 [-v] <mount|umount|register|status>"
+fi
+exit 0