dotfiles/acpi_hotkeys/ultrabase_eject

60 lines
1.1 KiB
Bash

#!/bin/bash
HUB_ID="5-1"
DOCK_ID="2"
# find all block devices
DEVICES=`ls -1 /sys/block/ | grep -P 's.+'`
MOUNTED_PARTITIONS=`mount | awk '{print($1);}'`
# Exit if already undocked or in progress
if [ `cat /sys/devices/platform/dock.$DOCK_ID/docked` == "0" ] \
|| [ -e /tmp/ultrabase_eject.lock ]
then
exit 1
fi
touch /tmp/ultrabase_eject.lock
# Syncing disks for safety
sync
for DRIVE in $DEVICES
do
if [ $DRIVE != 'sda' ] &&
([[ `ls -l /sys/block/$DRIVE | grep -P "usb\d/$HUB_ID/"` ]] ||
[ $DRIVE == 'sr0' ])
then
for PARTITION in $MOUNTED_PARTITIONS
do
# Check if it's mounted
if `echo $PARTITION | grep -q $DRIVE`
then
umount $PARTITION
if [ $? != 0 ]
then
# Do not undock when umount is failed
echo 9 > /proc/acpi/ibm/beep
rm /tmp/ultrabase_eject.lock
exit 1
fi
fi
done
fi
done
# Stop Ethernet connection
/etc/init.d/net.eth0 stop
# Turn off power to the UltraBase
echo 1 >/sys/devices/platform/dock.$DOCK_ID/undock
# Misc launch
#/etc/init.d/net.wlan0 start
# Tell the user we're OK
echo 6 > /proc/acpi/ibm/beep
rm /tmp/ultrabase_eject.lock