Hello,
On Fri, 25 Jan 2019 15:19:15 -0500 Adam Di Carlo wrote:
>
> Jan 25 15:16:37 salsa systemd[1]: Starting LSB: OpenIPMI Driver init script...
> Jan 25 15:16:37 salsa openipmi[3081]: /etc/init.d/openipmi: 55: [: 4.17:
> unexpected operator
> Jan 25 15:16:37 salsa openipmi[3081]: Starting ipmi drivers ipmi.
> Jan 25 15:16:37 salsa systemd[1]: Started LSB: OpenIPMI Driver init script.
attached you find a patch that fixes the bashisms (comparisons and
string localizations). Additionally most shellcheck issues of the script are
corrected (except for the sourcing tests, that should usually get skipped).
No functional change is introduced.
Cheers,
Lars
PS: the script feels a bit ugly and overly complicated in relation to its
limited purpose (load or unload some kernel modules). But at least it should be
in a better maintainable state now.
--- openipmi.orig 2019-09-27 19:37:51.981164100 +0200
+++ openipmi 2019-09-27 20:41:51.774647124 +0200
@@ -34,7 +34,7 @@
CONFIGFILE=/etc/default/openipmi
# source config info
-[ -r ${CONFIGFILE} ] && . ${CONFIGFILE}
+[ -r "${CONFIGFILE}" ] && . "${CONFIGFILE}"
#
# GLOBALS
@@ -51,8 +51,8 @@
*)
IPMI_SI_MODULE_NAME="ipmi_si" ;;
esac
-kernel=`uname -r | cut -d. -f1-2`
-if [ "${kernel}" == "2.4" ]; then
+kernel=$(uname -r | cut -d. -f1-2)
+if [ "${kernel}" = "2.4" ]; then
IPMI_SMB_MODULE_NAME="ipmi_smb_intf"
IPMI_SI_MODULE_NAME="ipmi_si_drv"
fi
@@ -77,7 +77,7 @@
DEV_IPMI_TIMEOUT=15
UDEV_EXISTS=0
-if [ -e /sbin/udev -o -e /sbin/udevd ]; then
+if [ -e /sbin/udev ] || [ -e /sbin/udevd ]; then
UDEV_EXISTS=1
fi
@@ -93,8 +93,8 @@
{
OnePlusLoaded=0
OnePlusUnloaded=0
- for m in $@; do
- if /sbin/lsmod | grep $m >/dev/null 2>&1 ; then
+ for m in "$@"; do
+ if /sbin/lsmod | grep -qFw "$m"; then
echo "$m module loaded."
OnePlusLoaded=1
elif [ -d "/sys/module/$m" ]; then
@@ -111,8 +111,8 @@
{
OnePlusLoaded=0
OnePlusUnloaded=0
- for m in $@; do
- if /sbin/lsmod | grep $m >/dev/null 2>&1 ; then
+ for m in "$@"; do
+ if /sbin/lsmod | grep -qFw "$m"; then
OnePlusLoaded=1
elif [ -d "/sys/module/$m" ]; then
OnePlusLoaded=1
@@ -136,12 +136,14 @@
{
rc_base=1
rc_hw=1
-modules_loaded_verbose "${MODULES_BASE}"
+ # shellcheck disable=SC2086
+ modules_loaded_verbose ${MODULES_BASE}
[ ${OnePlusLoaded} -eq 0 ] && rc_base=0
-
- modules_loaded_verbose "${MODULES_HW}"
+
+ # shellcheck disable=SC2086
+ modules_loaded_verbose ${MODULES_HW}
[ ${OnePlusLoaded} -eq 0 ] && rc_hw=0
-
+
return $((rc_base && rc_hw))
}
@@ -174,18 +176,19 @@
start_watchdog_common()
{
load_hw_modules
+ # shellcheck disable=SC2086
modprobe ipmi_watchdog ${IPMI_WATCHDOG_OPTIONS} > /dev/null 2>&1
modules_loaded ipmi_watchdog
[ ${OnePlusUnloaded} -ne 0 ] &&
RETVAL=$((RETVAL | 2)) &&
log_end_msg &&
return
- if [ ${UDEV_EXISTS} -eq 0 -a ! -e /dev/watchdog ]; then
- mknod -m 0600 /dev/watchdog c 10 130
- [ $? -ne 0 ] &&
- RETVAL=$((RETVAL | 8)) &&
- log_end_msg &&
+ if [ ${UDEV_EXISTS} -eq 0 ] && [ ! -e /dev/watchdog ]; then
+ if ! mknod -m 0600 /dev/watchdog c 10 130; then
+ RETVAL=$((RETVAL | 8))
+ log_end_msg
return
+ fi
fi
#log_success_msg
}
@@ -199,7 +202,7 @@
start_watchdog()
{
- log_begin_msg $"Starting ipmi_watchdog driver: "
+ log_begin_msg "Starting ipmi_watchdog driver: "
[ "${IPMI_WATCHDOG}" != "yes" ] &&
RETVAL=$((RETVAL | 2)) &&
log_failure_msg "not configured" &&
@@ -210,7 +213,7 @@
stop_watchdog()
{
- log_begin_msg $"Stopping ipmi_watchdog driver: "
+ log_begin_msg "Stopping ipmi_watchdog driver: "
modprobe -q -r ipmi_watchdog > /dev/null 2>&1
modules_loaded ipmi_watchdog
if [ ${OnePlusLoaded} -ne 0 ]; then
@@ -242,7 +245,7 @@
{
local poweroff_opts=""
load_hw_modules
- if [ "${IPMI_POWERCYCLE}" == "yes" ]; then
+ if [ "${IPMI_POWERCYCLE}" = "yes" ]; then
modinfo ipmi_poweroff 2>/dev/null | grep poweroff_control > /dev/null 2>&1 && \
poweroff_opts="poweroff_control=2"
modinfo ipmi_poweroff 2>/dev/null | grep poweroff_powercycle > /dev/null 2>&1 && \
@@ -304,27 +307,28 @@
stop_watchdog_quiet
stop_powercontrol_quiet
for m in ${MODULES}; do
- modprobe -q -r ${m} > /dev/null 2>&1
+ modprobe -q -r "${m}" > /dev/null 2>&1
done
# delete interface node ONLY if ipmi_devintf is unloaded
-[ `lsmod | grep -c "ipmi_devintf"` -eq 0 ] &&
+ if ! lsmod | grep -qFw "ipmi_devintf"; then
rm -f "/dev/ipmi${INTF_NUM}"
+ fi
}
unload_ipmi_modules_leave_features()
{
for m in ${MODULES_INTERFACES}; do
- modprobe -q -r ${m} > /dev/null 2>&1
+ modprobe -q -r "${m}" > /dev/null 2>&1
done
# delete interface node ONLY if ipmi_devintf is unloaded
-[ `lsmod | grep -c "ipmi_devintf"` -eq 0 ] &&
+ if ! lsmod | grep -qFw "ipmi_devintf"; then
rm -f "/dev/ipmi${INTF_NUM}"
- lsmod | egrep -q "ipmi_(poweroff|watchdog