#!/bin/bash DISK_UUID="12E6B87AE6B86021" IQN="iqn.2000-01.com.synology:SR3.VMs" PORTAL_IP="192.168.0.3" MOUNT_DIR="/home/dunestorm/VMs" MONITOR_PROC="vmware" MONITOR_PROC_CNT=7 # Do not modify _MONITOR_PROC_CNT=$(pgrep -f $MONITOR_PROC | wc -l) _FLAG_FORCE=0 show_usage (){ echo "Please use either '-m (--mount)' to mount or '-u (--umount)' to unmount this volume." echo "The use of '-s (--status)' is additionally an option." exit 1; } check_dir (){ echo "INFO: Process '${MONITOR_PROC}' has ${_MONITOR_PROC_CNT} instances running." if [ $(ls $MOUNT_DIR/. | wc -l) -ge 1 ] then echo "" echo "Directory is mounted at:" $MOUNT_DIR else echo "" echo "Directory is un-mounted from:" $MOUNT_DIR fi } check_proc_status (){ if [ ${_MONITOR_PROC_CNT} -gt $MONITOR_PROC_CNT ] then echo "WARNING: process '${MONITOR_PROC}' is still running, unable to unmount volume safely." exit 2; else echo "INFO: Process ${MONITOR_PROC} is not running." fi } mount_func (){ echo "[Attempting to mount iSCSI volume]" iscsiadm --mode node --targetname $IQN --portal $PORTAL_IP --login sleep 3 mount /dev/disk/by-uuid/$DISK_UUID $MOUNT_DIR -o noauto,noperm check_dir } umount_func (){ echo "[Attempting to un-mount iSCSI volume]" if [[ $_FLAG_FORCE -eq 0 ]]; then check_proc_status fi umount -l $MOUNT_DIR sleep 3 iscsiadm --mode node --targetname $IQN --portal $PORTAL_IP --logout check_dir } check_admin (){ if [[ $EUID -ne 0 ]] then echo "You may only mount/un-mount as root, please re-run with appropriate permissions." exit 1; fi } # Process input parameters while (( "$#" )); do case "$2" in -f|--force) _FLAG_FORCE=1 #echo "FLAG: ${_FLAG_FORCE}" ;; esac case "$1" in -m|--mount) check_admin mount_func ;; -u|--umount) check_admin umount_func ;; -s|--status) echo "[Showing status of mount-point]" check_dir ;; -r|--release) echo "Smart iSCSI Mounter v0.95" ;; -*) show_usage ;; esac exit 0; done # Show usage if no parameters have been passed if [[ $# -eq 0 ]] then show_usage fi