--- /dev/null
+#!/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