]> oss.titaniummirror.com Git - ovzbpc.git/blobdiff - esata
BackupPC_ovz: report entry to more functions in debug
[ovzbpc.git] / esata
diff --git a/esata b/esata
index 87f08ae643f5831e163267db541b149de4e78c28..0fd5b4a6887498c18472c99e7b0766ece13e4526 100755 (executable)
--- a/esata
+++ b/esata
@@ -5,13 +5,30 @@
 #
 # Add, remove, mount, and unmount external SATA drives
 
-DEV=/dev/sdb2
+BASEDEV=/dev/sdc
+PARTITION=2
 MNT=/media/esata
+# ----
+DEV=${BASEDEV}${PARTITION}
 DELAY=5
-SCSIDEV=1 # This can change based on OS, etc.
+
+error_exit() {
+    echo "$0: $1" >&2
+    exit 1
+}
+
+have_root() {
+    [ $(whoami) == "root" ] && return 0 || return 1
+}
+
+scsi_dev() {
+    local d=$(basename "$BASEDEV")
+    ls /sys/block/$d/device/scsi_disk | 2>/dev/null \
+       sed -e "s/^\([0-9a-f]*\):.*$/\1/"
+}
 
 registered() {
-    if [ -b "$DEV" ]; then
+    if [ -b "$BASEDEV" ]; then
        [ -n "$VERBOSE" ] && echo "registered"
        return 0
     else
@@ -20,6 +37,16 @@ registered() {
     fi
 }
 
+partitioned() {
+    if [ -b "$DEV" ]; then
+       [ -n "$VERBOSE" ] && echo "partitioned"
+       return 0
+    else
+       [ -n "$VERBOSE" ] && echo "not partitioned"
+       return 1
+    fi
+}
+
 mounted() {
     if mount | grep -q "$MNT"; then
        [ -n "$VERBOSE" ] && echo "mounted"
@@ -31,9 +58,10 @@ mounted() {
 }
 
 doregister() {
+    have_root || error_exit "need root privileges to register device"
     registered && return 0
     [ -n "$VERBOSE" ] && echo "register SATA device"
-    scsiadd -a $SCSIDEV 0 0 0 >/dev/null || return 1
+    scsiadd -a $(scsi_dev) 0 0 0 >/dev/null || return 1
     sleep $DELAY
     registered || return 1
     [ -n "$VERBOSE" ] && echo "register ok"
@@ -41,8 +69,10 @@ doregister() {
 }
 
 domount() {
+    have_root || error_exit "need root privileges to mount device"
     mounted && return 0
     doregister || return 1
+    partitioned || return 1
     [ -n "$VERBOSE" ] && echo "mount SATA $DEV"
     mkdir -p "$MNT" || return 1
     mount "$DEV" "$MNT" || return 1
@@ -51,9 +81,10 @@ domount() {
 }
 
 dounregister() {
+    have_root || error_exit "need root privileges to unregister device"
     registered || return 0
     [ -n "$VERBOSE" ] && echo "unregister SATA device"
-    scsiadd -r $SCSIDEV 0 0 0 >/dev/null || return 1
+    scsiadd -r $(scsi_dev) 0 0 0 >/dev/null || return 1
     sleep $DELAY
     registered && return 1
     [ -n "$VERBOSE" ] && echo "unregister ok"
@@ -62,6 +93,7 @@ dounregister() {
 
 doumount() {
     if mounted; then
+       have_root || error_exit "need root privileges to unmount device"
        [ -n "$VERBOSE" ] && echo "unmount SATA $DEV"
        umount "$MNT" || return 1
        mounted && return 1
@@ -89,21 +121,21 @@ elif [ "$1" = "umount" -o "$1" = "unmount" ]; then
     if doumount; then
        echo "esata is unmounted"
     else
-       echo "$0: cannot unmount esata" >&2
-       exit 1
+       error_exit "cannot unmount esata"
     fi
 elif [ "$1" = "register" ]; then
     if doregister; then
-       echo "esata registered as $DEV"
+       echo "esata drive registered as $BASEDEV"
+       partitioned || echo "WARNING: drive is not partitioned"
     else
-       echo "$0: cannot register esata" >&2
-       exit 1
+       error_exit "cannot register esata"
     fi
 elif [ "$1" = "status" ]; then
     if mounted; then
        echo "esata mounted on $MNT"
     elif registered; then
-       echo "esata registered as $DEV but not mounted"
+       echo "esata registered as $BASEDEV but not mounted"
+       partitioned || echo "WARNING: drive is not partitioned"
     else
        echo "esata is unregistered"
     fi