[X2Go-Commits] [live-build-x2go] 15/108: changed how BLOCKDEVS list is created, added various comments to make code more readable/understandable

git-admin at x2go.org git-admin at x2go.org
Wed Mar 20 22:13:06 CET 2019


This is an automated email from the git hooks/post-receive script.

x2go pushed a commit to branch feature/openbox
in repository live-build-x2go.

commit 6db8f4b105a0e8dd2f45ade2bad28b782ade6830
Author: Stefan Baur (BAUR-ITCS) <kontakt at baur-itcs.de>
Date:   Tue Feb 6 11:41:58 2018 +0100

    changed how BLOCKDEVS list is created, added various comments to make code more readable/understandable
---
 .../lib/live/config/2260-getsshhostkeysfrommedia   | 38 +++++++++++++++++++---
 1 file changed, 34 insertions(+), 4 deletions(-)

diff --git a/config/includes.chroot/lib/live/config/2260-getsshhostkeysfrommedia b/config/includes.chroot/lib/live/config/2260-getsshhostkeysfrommedia
index 965bdad..81d9af3 100755
--- a/config/includes.chroot/lib/live/config/2260-getsshhostkeysfrommedia
+++ b/config/includes.chroot/lib/live/config/2260-getsshhostkeysfrommedia
@@ -11,15 +11,23 @@ GetSSHHostKeysFromMedia ()
 			echo -n "\n$(date +'%F | %T | ')'$0' is waiting for tty8 to become available."
 			sleep 2
 		done
+                while ! service udev status >/dev/null; do
+                        echo -n "\n$(date +'%F | %T | ')'$0' Waiting for udev to start ..." | tee -a /dev/tty8
+                        sleep 1;
+                done
+                while ! udevadm settle; do
+                        echo -n "\n$(date +'%F | %T | ')'$0' Waiting for udev to process all events ..." | tee -a /dev/tty8
+                        sleep 1;
+                done
 
 		# list devices (and mountpoints, if present)
-		LABELMPLIST=$(lsblk -oLABEL,NAME,MOUNTPOINT -l)
+		LABELMPLIST=$(lsblk -oLABEL,NAME,MOUNTPOINT,HOTPLUG -ln)
 
 		# search for our magic label
-		X2GOTCELIVELABELS=$(echo -e "$LABELMPLIST" | awk '$3~/^[^\/]/ && $3="" ; $1=="X2GO-TCE-LIVE" { print $2 " " $3}')
+		X2GOTCELIVELABELS=$(echo -e "$LABELMPLIST" | awk '$3~/^[^\/]/ && $3="" ; $1=="X2GO-TCE-LIVE" { print $2 " " $3 " " $4}')
 
 		# block device list, non-removable first (for security - we don't want USB media to be able to override keys on fixed disks)
-		BLOCKDEVS=$(grep -H '' /sys/block/*/removable | awk -F':' '{ print $2 ":" $1}' | sort | awk -F'/' '{print $4}')
+		BLOCKDEVS="$(echo $X2GOTCELIVELABELS | awk '$3 == "0" {print $2}') $(echo $X2GOTCELIVELABELS | awk '$3 == "1" {print $2}')"
 
 		check_for_config (){
 		if [ -d $1/config/sshdkeys ] ; then
@@ -77,37 +85,59 @@ GetSSHHostKeysFromMedia ()
 		fi
 		}
 
+		# for every block device in our list, do ...
 		for BLOCKDEV in $BLOCKDEVS; do 
+			# check if it also appears in the list of devices carrying our magic label
+			# this should always be the case since we changed how BLOCKDEVS is assembled
 			NEXTDEVICE=$(echo "$X2GOTCELIVELABELS" | grep "$BLOCKDEV")
 			if [ -n "$NEXTDEVICE" ] ; then
+				# now figure out the mountpoint
 				MNTPT=$(echo $NEXTDEVICE | awk '{print $2}')
+				# and the device name? Wait, this is the magic label instead.
 				NEXTDEVICE=$(echo $NEXTDEVICE | awk '{print $1}')
 
 				if [ -n "$MNTPT" ] ; then
+					# If the mountpoint variable isn't empty, it means the device is already mounted.
 					echo -n "\n$(date +'%F | %T | ')'$0' Device '$NEXTDEVICE' is mounted at: '$MNTPT'" | tee -a /dev/tty8
+					# so let's check if we have a config directory at that mountpoint.
 					if check_for_config $MNTPT ; then
+						# if we managed to pull a config off of it (or save one on it), we make a note of this ...
 						echo -e "$LABELMPLIST" >/var/lib/live/config/opensshkeys
+						# and quit right here.
 						exit 0
 					fi
 				else
+					# So there's no active mount for the device with our magic label ...
 					echo -n "\n$(date +'%F | %T | ')'$0' Device '$NEXTDEVICE' is not mounted." | tee -a /dev/tty8
+					# let's see if this is a fixed disk.
 					if grep -q "^0$" /sys/block/$BLOCKDEV/removable ; then
+						# yes, it is, so let's go ahead and try to mount it ...
 						echo -n "\n$(date +'%F | %T | ')'$0' Device '$NEXTDEVICE' is a fixed disk, mounting ..." | tee -a /dev/tty8
+						# obviously, we need a mountpoint for it ...
 						mkdir -p /media/fixeddisks/$NEXTDEVICE
+						# and now we can try to mount it. Let's do it in readonly mode, just to play it safe.
+						# a read-write remount is only attempted within check_for_config if it finds an empty
+						# sshd keys directory.
 						mount -o ro /dev/$NEXTDEVICE /media/fixeddisks/$NEXTDEVICE
+						# If we managed to pull a config off of it (or save one on it), ...
 						if check_for_config /media/fixeddisks/$NEXTDEVICE ; then
+							# we umount, then make a note that we succeeded ...
 							umount /media/fixeddisks/$NEXTDEVICE
 							echo -e "$LABELMPLIST" >/var/lib/live/config/opensshkeys
+							# and quit right here.
 							exit 0
 						fi
+						# If we didn't succeed in pulling a config, we still need to umount what we mounted.
 						umount /media/fixeddisks/$NEXTDEVICE
 					else
+						# If a removable disk hasn't been mounted by the automounter, something's amiss and we shouldn't try to meddle with it.
+						# So let's make a note of this and move on.
 						echo -n "\n$(date +'%F | %T | ')'$0' Device '$NEXTDEVICE' is a removable disk, not mounted by automounter, skipping." | tee -a /dev/tty8
-						:
 					fi
 				fi
 			fi
 		done
+		# Now let's leave a mark saying that we're done, so the next script can pick up on it.
 		echo -e "$LABELMPLIST" >/var/lib/live/config/opensshkeys
 	) &
 }

--
Alioth's /home/x2go-admin/maintenancescripts/git/hooks/post-receive-email on /srv/git/code.x2go.org/live-build-x2go.git


More information about the x2go-commits mailing list