Bug#920461: 'unexpected operator' error coming from /etc/init.d/openipmi

2019-09-27 Thread devel
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

Bug#920461: 'unexpected operator' error coming from /etc/init.d/openipmi

2019-09-25 Thread Sam Morris
Source: openipmi
Followup-For: Bug #920461

$ checkbashisms /etc/init.d/openipmi
possible bashism in /etc/init.d/openipmi line 55 (should be 'b = a'):
if [ "${kernel}" == "2.4" ]; then
possible bashism in /etc/init.d/openipmi line 202 ($"foo" should be 
eval_gettext "foo"):
log_begin_msg $"Starting ipmi_watchdog driver: "
possible bashism in /etc/init.d/openipmi line 213 ($"foo" should be 
eval_gettext "foo"):
log_begin_msg $"Stopping ipmi_watchdog driver: "
possible bashism in /etc/init.d/openipmi line 245 (should be 'b = a'):
if [ "${IPMI_POWERCYCLE}" == "yes" ]; then

The init script should just be changed to be #!/bin/bash.

-- System Information:
Debian Release: 9.9
  APT prefers oldstable-updates
  APT policy: (540, 'oldstable-updates'), (540, 'oldstable'), (520, 
'stable-updates'), (520, 'stable'), (510, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)

Kernel: Linux 4.9.0-9-686-pae (SMP w/1 CPU core)
Locale: LANG=en_GB.UTF-8, LC_CTYPE=en_GB.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_GB.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)



Bug#920461: 'unexpected operator' error coming from /etc/init.d/openipmi

2019-01-25 Thread Adam Di Carlo
Package: openipmi
Version: 2.0.25-2
Severity: normal

Even disabled, when starting the package, I'm seeing an error from
systemctl:

root@salsa:/etc/init.d# systemctl status openipmi.service
● openipmi.service - LSB: OpenIPMI Driver init script
   Loaded: loaded (/etc/init.d/openipmi; generated)
   Active: active (exited) since Fri 2019-01-25 15:16:37 EST; 3s ago
 Docs: man:systemd-sysv-generator(8)
  Process: 3081 ExecStart=/etc/init.d/openipmi start (code=exited, 
status=0/SUCCESS)

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.


It doesn't seem to affect functionality.

-- System Information:
Debian Release: buster/sid
  APT prefers testing
  APT policy: (1001, 'testing'), (300, 'unstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386, armhf

Kernel: Linux 4.17.0-0.bpo.3-amd64 (SMP w/4 CPU cores)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8), 
LANGUAGE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages openipmi depends on:
ii  libc6 2.28-5
ii  libncurses6   6.1+20181013-1
ii  libopenipmi0  2.0.25-2
ii  libpopt0  1.16-11
ii  libsnmp30 5.7.3+dfsg-5
ii  libssl1.1 1.1.1a-1
ii  libtinfo6 6.1+20181013-1
ii  lsb-base  10.2018112800

openipmi recommends no packages.

openipmi suggests no packages.

-- Configuration Files:
/etc/default/openipmi changed:
IPMI_SI=no
DEV_IPMI=yes
IPMI_WATCHDOG=no
IPMI_WATCHDOG_OPTIONS="timeout=60"
IPMI_POWEROFF=no
IPMI_POWERCYCLE=no
IPMI_IMB=no


-- no debconf information