got the password functions right maybe
authorChris Koeritz <fred@gruntose.com>
Wed, 7 Feb 2018 20:47:11 +0000 (15:47 -0500)
committerChris Koeritz <fred@gruntose.com>
Wed, 7 Feb 2018 20:47:11 +0000 (15:47 -0500)
had to drop the awful approach of echoing the result for much nicer approach of setting a variable name provided by the caller.  this is a lot better technique.

scripts/security/password_functions.sh
scripts/site_avenger/revamp_cakelampvm.sh

index 637e352d9922b438d34f25206332e70bf8c075a9..ca365fd263efe101f2924fc8f36fa2ec1246191b 100644 (file)
@@ -8,14 +8,12 @@
 # two requirements are done automatically by the store_password function.
 
 # load_password:
-# provides a way to read a password out of a file.
-# the return value is an echoed password, so this method should always be
-# called from within a subshell, e.g.:
-#    mypass="$(load_password /etc/glorp/secret_passcode)"
-# the returned echo will be blank if the function failed.
+# provides a way to read a password out of a file.  the filename is the first
+# paramater and the variable to fill with the password is the second.
 function load_password()
 {
   local passfile="$1"; shift
+  local varname="$1"; shift
   if [ -z "$passfile" ]; then
     echo 'The load_password function needs a filename to read the password from.'
     return 1
@@ -27,7 +25,11 @@ function load_password()
   fi
   local passwd
   read passwd < "$passfile"
-  echo "$passwd"
+
+  # return the password in the variable they provided.
+  eval $varname="$passwd"
+#echo varname is: $varname
+#echo new value of that variable is ${!varname}
 }
 
 # stores a password into a password file.  the password file should be the
@@ -56,21 +58,25 @@ and (2) the password that should be stored.
 }
 
 # reads a password from the console, without echoing the letters when they
-# are typed.  the prompt to show the user is required as the first parameter.
-# the password read in is returned as an echo, like load_password above.
+# are typed.  the prompt to show the user is required as the first parameter,
+# and the variable to fill with the result is the second parameter.
 function read_password()
 {
-  prompt="$1"; shift
+  local prompt="$1"; shift
+  local varname="$1"; shift
+#hmmm: complain if not enough parms.
   echo -n "$prompt "
-#  sync
   # turn off echo but remember former setting.
   stty_orig=`stty -g`
   stty -echo
+  local the_passwd
   read the_passwd
   # turn echo back on.
   stty $stty_orig
-  # return the password as an echo.
-  echo "$the_passwd"
+  # return the password in the variable they provided.
+  eval $varname="$the_passwd"
+#echo varname is: $varname
+#echo new value of that variable is ${!varname}
 }
 
 
index d86a35d7e169b4f4ac6fded904a80a28b9bf11f3..773e5a8909ec6ce70c1d92b1c8e3790b5c12fde6 100644 (file)
@@ -25,11 +25,11 @@ source "$FEISTY_MEOW_SCRIPTS/security/password_functions.sh"
 # new requirement to have the sql root password, since we need to do some sql db configuration.
 
 echo A
-mysql_passwd="$(load_password /etc/mysql/secret_password)"
+load_password /etc/mysql/secret_password mysql_passwd
 echo B
 if [ -z "$mysql_password" ]; then
 echo C
-  mysql_password="$(read_password "Please enter the MySQL root account password:")"
+  read_password "Please enter the MySQL root account password:" mysql_password
 echo D
 #  echo -n "Please enter the MySQL root account password: "
 #  # turn off echo but remember former setting.