setmysqlpass: be more careful before plundering into action

Since this script is rooting the database, it'd be good to use a little
more precaution so that we don't let systems be in an inconsistent case
when crashing.

In cases where the PATH variable is not appropriately set (variable is
empty by default when script is invoked by puppet) the script shuts down
mysql and then is not able to call most commands.
This commit is contained in:
Gabriel Filion 2013-11-15 03:19:40 -05:00
parent 82cf365b2c
commit 3c93ba2339
2 changed files with 41 additions and 0 deletions

View file

@ -2,6 +2,26 @@
test -f /root/.my.cnf || exit 1
must_have ()
{
# Here, using "which" would not be appropriate since it also depends on
# PATH being set correctly. The type builtin command is unaffected by the
# environment.
type $1 >/dev/null
if [ $? -ne 0 ]; then
echo "Command '$1' not found, did you correctly set PATH ? Its current value is: $PATH" >&2
exit 1
fi
}
# Since this script is doing something rather unsafe with the database, we want
# to be really careful to have all the necessary tools before doing anything so
# that we don't end up in an inconsistent state.
must_have sleep
must_have mysql
must_have killall
must_have chown
rootpw=$(grep password /root/.my.cnf | sed -e 's/^[^=]*= *\(.*\) */\1/')
/sbin/service mysqld stop

View file

@ -2,6 +2,27 @@
test -f /root/.my.cnf || exit 1
must_have ()
{
# Here, using "which" would not be appropriate since it also depends on
# PATH being set correctly. The type builtin command is unaffected by the
# environment.
type $1 >/dev/null
if [ $? -ne 0 ]; then
echo "Command '$1' not found, did you correctly set PATH ? Its current value is: $PATH" >&2
exit 1
fi
}
# Since this script is doing something rather unsafe with the database, we want
# to be really careful to have all the necessary tools before doing anything so
# that we don't end up in an inconsistent state.
must_have sleep
must_have mysql
must_have killall
must_have ls
must_have chown
rootpw=$(grep password /root/.my.cnf | sed -e 's/^[^=]*= *\(.*\) */\1/')
/etc/init.d/mysql stop