79 lines
1.5 KiB
Bash
Executable File
79 lines
1.5 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
## mount and umount partitions a little less than "by hand". ##
|
|
# usbman.sh by @root_informatica
|
|
|
|
FLAG=$1
|
|
|
|
usage() {
|
|
cat<<EOF
|
|
usage:
|
|
usblink.sh [ -m, -u ]
|
|
-m) mount partitions.
|
|
-u) umount partitions.
|
|
EOF
|
|
}
|
|
|
|
|
|
# list removable usb devices.
|
|
removable_list() {
|
|
usb_keys=($(
|
|
grep -Hv ^0$ /sys/block/*/removable |
|
|
sed s/removable:.*$/device\\/uevent/ |
|
|
xargs grep -H ^DRIVER=sd |
|
|
sed s/device.uevent.*$/size/ |
|
|
xargs grep -Hv ^0$ |
|
|
cut -d / -f 4
|
|
))
|
|
|
|
for dev in ${usb_keys[@]} ;do
|
|
echo $dev \"$(
|
|
sed -e s/\ *$//g </sys/block/$dev/device/model
|
|
)\" ;
|
|
done
|
|
}
|
|
|
|
# partitions in.
|
|
link_up() {
|
|
d_target=$(removable_list | fzy | cut -c 1-3)
|
|
for p in $(lsblk -l -n -o NAME /dev/$d_target | grep "[[:alnum:]]\{4\}"); do
|
|
if [ -d "/tmp/$p" ]; then
|
|
echo "the directory /tmp/$p already exists!"
|
|
else
|
|
mkdir /tmp/$p
|
|
fi
|
|
|
|
m_check=$(grep -w "$p" < /proc/mounts | cut -d ' ' -f2)
|
|
if [ -n "$m_check" ]; then
|
|
echo "the partition $p is already mounted on $m_check"
|
|
else
|
|
doas mount /dev/$p /tmp/$p
|
|
echo "$p mounted on /tmp/$p"
|
|
fi
|
|
done
|
|
}
|
|
|
|
# partitions out.
|
|
link_down() {
|
|
d_target=$(removable_list | fzy | cut -c 1-3)
|
|
for p in $(lsblk -l -n -o NAME /dev/$d_target | grep "[[:alnum:]]\{4\}"); do
|
|
doas umount /dev/$p
|
|
rm -r /tmp/$p
|
|
done
|
|
}
|
|
|
|
case $FLAG in
|
|
-m) # mount partitions.
|
|
link_up
|
|
;;
|
|
-u) # umount partitions.
|
|
link_down
|
|
;;
|
|
*)
|
|
usage
|
|
;;
|
|
esac
|
|
|
|
|
|
|