Introduced option -dummy and enabled real unmounting

This commit is contained in:
Thomas Schmitt 2019-11-30 13:06:16 +01:00
parent e36596b8d4
commit 81272c80ca

View File

@ -60,6 +60,8 @@ print_usage() {
echo "one advisable device is listed, it really gets overwritten by the" echo "one advisable device is listed, it really gets overwritten by the"
echo "file content of the given -image_file. In this case the exit value" echo "file content of the given -image_file. In this case the exit value"
echo "is zero if writing succeeded, non-zero else." echo "is zero if writing succeeded, non-zero else."
echo "Option -dummy prevents this kind of real action and rather shows the"
echo "unmount and write commands on stdout."
echo echo
echo "Options:" echo "Options:"
echo " -list_all Print list of all found devices with advice, vendor" echo " -list_all Print list of all found devices with advice, vendor"
@ -90,7 +92,8 @@ print_usage() {
echo " is found, then they get listed but no writing" echo " is found, then they get listed but no writing"
echo " happens. In this case, re-run with one of the" echo " happens. In this case, re-run with one of the"
echo " advised device names to get a real write run." echo " advised device names to get a real write run."
echo echo " -dummy Report the -DO_WRITE actions but do not perform"
echo " them."
echo " -help Print this text to stdout and then end the program." echo " -help Print this text to stdout and then end the program."
echo "Examples:" echo "Examples:"
echo " $0 -with_sudo -list_all" echo " $0 -with_sudo -list_all"
@ -119,6 +122,7 @@ reset_job() {
with_sudo= with_sudo=
image_file= image_file=
do_write= do_write=
dummy_run=
# Status # Status
sudo_cmd= sudo_cmd=
@ -173,6 +177,9 @@ arg_interpreter() {
elif test "$i" = "-image_file" elif test "$i" = "-image_file"
then then
next_is="image_file" next_is="image_file"
elif test "$i" = "-dummy"
then
dummy_run=y
elif test "$i" = "-DO_WRITE" elif test "$i" = "-DO_WRITE"
then then
do_write=y do_write=y
@ -402,13 +409,16 @@ list_devices() {
write_image() { write_image() {
echo "--- not activated yet ---"
if test -z "$umount_cmd" if test -z "$umount_cmd"
then then
echo "No executable program umount found in: $sudo_x_dir_list" >&2 echo "No executable program umount found in: $sudo_x_dir_list" >&2
return 6 return 6
fi fi
if test -n "$dummy_run"
then
echo "Would do if not -dummy:"
fi
partitions=$($lsblk_cmd -n -p -o NAME /dev/"$2" | grep -v '^'/dev/"$2"'$' \ partitions=$($lsblk_cmd -n -p -o NAME /dev/"$2" | grep -v '^'/dev/"$2"'$' \
| sed -e 's/[^a-zA-Z0-9_+@:.,/-]//g' | tr '\n\r' ' ') | sed -e 's/[^a-zA-Z0-9_+@:.,/-]//g' | tr '\n\r' ' ')
mounted_devs= mounted_devs=
@ -421,17 +431,37 @@ write_image() {
done done
if test -n "$mounted_devs" if test -n "$mounted_devs"
then then
echo "Would do: $sudo_cmd $umount_cmd $mounted_devs" for i in $mounted_devs
do
if test -n "$dummy_run"
then
echo " $sudo_cmd $umount_cmd $i"
else
if $sudo_cmd $umount_cmd "$i"
then
echo "Unmounted: $i"
else
echo "FAILURE: Non-zero exit value with: sudo_cmd $umount_cmd $i" >&2
return 7
fi
fi
done
fi fi
if test -z "$dd_cmd" if test -z "$dd_cmd"
then then
echo "No executable program dd found in: $sudo_x_dir_list" >&2 echo "No executable program dd found in: $sudo_x_dir_list" >&2
return 6 return 6
fi fi
echo "Would do: $sudo_cmd $dd_cmd if='${1}' bs=1M of=/dev/${2} ; sync" if test -n "$dummy_run"
then
echo "--- not activated yet ---" echo " $sudo_cmd $dd_cmd if='${1}' bs=1M of=/dev/${2} ; sync"
else
echo "--- not activated yet ---"
echo "Would do: $sudo_cmd $dd_cmd if='${1}' bs=1M of=/dev/${2} ; sync"
echo "--- not activated yet ---"
fi
return 0 return 0
} }