From 460eff5ed55218e3407a0d33495aa98551301562 Mon Sep 17 00:00:00 2001 From: LordMathis Date: Sun, 10 Jun 2018 21:03:01 +0200 Subject: [PATCH] Add usb udev script --- bin/system-usb-udev.sh | 88 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 88 insertions(+) create mode 100755 bin/system-usb-udev.sh diff --git a/bin/system-usb-udev.sh b/bin/system-usb-udev.sh new file mode 100755 index 0000000..38990e0 --- /dev/null +++ b/bin/system-usb-udev.sh @@ -0,0 +1,88 @@ +#!/bin/sh + +usb_print() { + devices=$(lsblk -Jplno NAME,TYPE,RM,SIZE,MOUNTPOINT,VENDOR) + output="" + counter=0 + + for unmounted in $(echo "$devices" | jq -r '.blockdevices[] | select(.type == "part") | select(.rm == "1") | select(.mountpoint == null) | .name'); do + unmounted=$(echo "$unmounted" | tr -d "[:digit:]") + unmounted=$(echo "$devices" | jq -r '.blockdevices[] | select(.name == "'"$unmounted"'") | .vendor') + unmounted=$(echo "$unmounted" | tr -d ' ') + + if [ $counter -eq 0 ]; then + space="" + else + space=" " + fi + counter=$((counter + 1)) + + output="$output$space#1 $unmounted" + done + + for mounted in $(echo "$devices" | jq -r '.blockdevices[] | select(.type == "part") | select(.rm == "1") | select(.mountpoint != null) | .size'); do + if [ $counter -eq 0 ]; then + space="" + else + space=" " + fi + counter=$((counter + 1)) + + output="$output$space#2 $mounted" + done + + echo "$output" +} + +usb_update() { + pid=$(pgrep -xf "/bin/sh /home/matus/bin/system-usb-udev.sh") + + if [ "$pid" != "" ]; then + kill -10 "$pid" + fi +} + +case "$1" in + --update) + usb_update + ;; + --mount) + devices=$(lsblk -Jplno NAME,TYPE,RM,MOUNTPOINT) + + for mount in $(echo "$devices" | jq -r '.blockdevices[] | select(.type == "part") | select(.rm == "1") | select(.mountpoint == null) | .name'); do + # udisksctl mount --no-user-interaction -b "$mount" + + # mountpoint=$(udisksctl mount --no-user-interaction -b $mount) + # mountpoint=$(echo $mountpoint | cut -d " " -f 4 | tr -d ".") + # terminal -e "bash -lc 'filemanager $mountpoint'" + + mountpoint=$(udisksctl mount --no-user-interaction -b "$mount") + mountpoint=$(echo "$mountpoint" | cut -d " " -f 4 | tr -d ".") + termite -e "bash -lc 'mc $mountpoint'" & + done + + usb_update + ;; + --unmount) + devices=$(lsblk -Jplno NAME,TYPE,RM,MOUNTPOINT) + + for unmount in $(echo "$devices" | jq -r '.blockdevices[] | select(.type == "part") | select(.rm == "1") | select(.mountpoint != null) | .name'); do + udisksctl unmount --no-user-interaction -b "$unmount" + udisksctl power-off --no-user-interaction -b "$unmount" + done + + usb_update + ;; + *) + trap exit INT + trap "echo" USR1 + + while true; do + usb_print + + sleep 60 & + wait + done + ;; +esac +