From: Harald Hoyer Date: Fri, 26 Mar 2021 09:29:27 +0000 (+0100) Subject: fix(iscsi): shellcheck for modules.d/95iscsi X-Git-Tag: 054~191 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a490409702d8bf9003d2baf191b38af8f1720935;p=thirdparty%2Fdracut.git fix(iscsi): shellcheck for modules.d/95iscsi --- diff --git a/modules.d/95iscsi/.shchkdir b/modules.d/95iscsi/.shchkdir new file mode 100644 index 000000000..e69de29bb diff --git a/modules.d/95iscsi/iscsiroot.sh b/modules.d/95iscsi/iscsiroot.sh index 4d39d4a98..63acd8587 100755 --- a/modules.d/95iscsi/iscsiroot.sh +++ b/modules.d/95iscsi/iscsiroot.sh @@ -38,10 +38,10 @@ modprobe crc32c 2> /dev/null # start iscsiuio if needed if [ -z "${DRACUT_SYSTEMD}" ] \ - && ([ -e /sys/module/bnx2i ] || [ -e /sys/module/qedi ]) \ + && { [ -e /sys/module/bnx2i ] || [ -e /sys/module/qedi ]; } \ && ! [ -e /tmp/iscsiuio-started ]; then iscsiuio - > /tmp/iscsiuio-started + : > /tmp/iscsiuio-started fi handle_firmware() { @@ -61,7 +61,7 @@ handle_firmware() { ) retry=$(cat /tmp/session-retry) - if [ $retry -lt $ifaces ]; then + if [ "$retry" -lt "$ifaces" ]; then retry=$((retry + 1)) echo $retry > /tmp/session-retry return 1 @@ -84,7 +84,7 @@ handle_firmware() { handle_netroot() { local iscsi_initiator iscsi_target_name iscsi_target_ip iscsi_target_port - local iscsi_target_group iscsi_protocol iscsirw iscsi_lun + local iscsi_target_group iscsirw iscsi_lun local iscsi_username iscsi_password local iscsi_in_username iscsi_in_password local iscsi_iface_name iscsi_netdev_name @@ -123,7 +123,7 @@ handle_netroot() { #limit iscsistart login retries if [ "$login_retry_max_seen" != yes ]; then retries=$(getargnum 3 0 10000 rd.iscsi.login_retry_max) - if [ $retries -gt 0 ]; then + if [ "$retries" -gt 0 ]; then iscsi_param="${iscsi_param% } node.session.initial_login_retry_max=$retries" fi fi @@ -134,12 +134,12 @@ handle_netroot() { fsopts=${fsopts:+$fsopts,}${iscsirw} if [ -z "$iscsi_initiator" ] && [ -f /sys/firmware/ibft/initiator/initiator-name ] && ! [ -f /tmp/iscsi_set_initiator ]; then - iscsi_initiator=$(while read line || [ -n "$line" ]; do echo $line; done < /sys/firmware/ibft/initiator/initiator-name) + iscsi_initiator=$(while read -r line || [ -n "$line" ]; do echo "$line"; done < /sys/firmware/ibft/initiator/initiator-name) echo "InitiatorName=$iscsi_initiator" > /run/initiatorname.iscsi rm -f /etc/iscsi/initiatorname.iscsi mkdir -p /etc/iscsi ln -fs /run/initiatorname.iscsi /etc/iscsi/initiatorname.iscsi - > /tmp/iscsi_set_initiator + : > /tmp/iscsi_set_initiator if [ -n "$DRACUT_SYSTEMD" ]; then systemctl try-restart iscsid # FIXME: iscsid is not yet ready, when the service is :-/ @@ -160,7 +160,7 @@ handle_netroot() { rm -f /etc/iscsi/initiatorname.iscsi mkdir -p /etc/iscsi ln -fs /run/initiatorname.iscsi /etc/iscsi/initiatorname.iscsi - > /tmp/iscsi_set_initiator + : > /tmp/iscsi_set_initiator if [ -n "$DRACUT_SYSTEMD" ]; then systemctl try-restart iscsid # FIXME: iscsid is not yet ready, when the service is :-/ @@ -208,20 +208,20 @@ handle_netroot() { # install mount script [ -z "$DRACUT_SYSTEMD" ] \ - && echo "iscsi_lun=$iscsi_lun . /bin/mount-lun.sh " > $hookdir/mount/01-$$-iscsi.sh + && echo "iscsi_lun=$iscsi_lun . /bin/mount-lun.sh " > "$hookdir"/mount/01-$$-iscsi.sh fi - if strglobin $iscsi_target_ip '*:*:*' && ! strglobin $iscsi_target_ip '['; then + if strglobin "$iscsi_target_ip" '*:*:*' && ! strglobin "$iscsi_target_ip" '['; then iscsi_target_ip="[$iscsi_target_ip]" fi - targets=$(iscsiadm -m discovery -t st -p $iscsi_target_ip:${iscsi_target_port:+$iscsi_target_port} | sed 's/^.*iqn/iqn/') + targets=$(iscsiadm -m discovery -t st -p "$iscsi_target_ip":${iscsi_target_port:+$iscsi_target_port} | sed 's/^.*iqn/iqn/') [ -z "$targets" ] && echo "Target discovery to $iscsi_target_ip:${iscsi_target_port:+$iscsi_target_port} failed with status $?" && exit 1 found= for target in $targets; do if [ "$target" = "$iscsi_target_name" ]; then if [ -n "$iscsi_iface_name" ]; then - iscsiadm -m iface -I $iscsi_iface_name --op=new + iscsiadm -m iface -I "$iscsi_iface_name" --op=new EXTRA=" ${iscsi_netdev_name:+--name=iface.net_ifacename --value=$iscsi_netdev_name} " EXTRA="$EXTRA ${iscsi_initiator:+--name=iface.initiatorname --value=$iscsi_initiator} " fi @@ -236,8 +236,8 @@ handle_netroot() { ${iscsi_password:+ --name=node.session.auth.password --value=$iscsi_password} \ ${iscsi_in_username:+--name=node.session.auth.username_in --value=$iscsi_in_username} \ ${iscsi_in_password:+--name=node.session.auth.password_in --value=$iscsi_in_password} \ - $EXTRA \ - $NULL" + $EXTRA" + # shellcheck disable=SC2086 $CMD $__op if [ "$netif" != "timeout" ]; then $CMD --login @@ -253,7 +253,7 @@ handle_netroot() { warn "iSCSI target \"$iscsi_target_name\" not found on portal $iscsi_target_ip:$iscsi_target_port" return 1 fi - > $hookdir/initqueue/work + : > "$hookdir"/initqueue/work netroot_enc=$(str_replace "$1" '/' '\2f') echo 'started' > "/tmp/iscsistarted-iscsi:${netroot_enc}" diff --git a/modules.d/95iscsi/module-setup.sh b/modules.d/95iscsi/module-setup.sh index bd8c92b6d..fe730adc8 100755 --- a/modules.d/95iscsi/module-setup.sh +++ b/modules.d/95iscsi/module-setup.sh @@ -2,7 +2,6 @@ # called by dracut check() { - local _rootdev # If our prerequisites are not met, fail anyways. require_binaries iscsi-iname iscsiadm iscsid || return 1 @@ -13,7 +12,7 @@ check() { pushd . > /dev/null for_each_host_dev_and_slaves block_is_iscsi local _is_iscsi=$? - popd > /dev/null + popd > /dev/null || exit [[ $_is_iscsi == 0 ]] || return 255 } return 0 @@ -28,7 +27,7 @@ get_ibft_mod() { iface_mac=${iface_desc#*,} iface_mac=${iface_mac%%,*} if [ "$ibft_mac" = "$iface_mac" ]; then - echo $iface_mod + echo "$iface_mod" return 0 fi done @@ -42,16 +41,16 @@ install_ibft() { # - specify firmware booting cmdline parameter for d in /sys/firmware/*; do - if [ -d ${d}/ethernet0 ]; then - read ibft_mac < ${d}/ethernet0/mac - ibft_mod=$(get_ibft_mod $ibft_mac) + if [ -d "${d}"/ethernet0 ]; then + read -r ibft_mac < "${d}"/ethernet0/mac + ibft_mod=$(get_ibft_mod "$ibft_mac") fi - if [ -z "$ibft_mod" ] && [ -d ${d}/ethernet1 ]; then - read ibft_mac < ${d}/ethernet1/mac - ibft_mod=$(get_ibft_mod $ibft_mac) + if [ -z "$ibft_mod" ] && [ -d "${d}"/ethernet1 ]; then + read -r ibft_mac < "${d}"/ethernet1/mac + ibft_mod=$(get_ibft_mod "$ibft_mac") fi - if [ -d ${d}/initiator ]; then - if [ ${d##*/} = "ibft" ] && [ "$ibft_mod" != "bnx2i" ]; then + if [ -d "${d}"/initiator ]; then + if [ "${d##*/}" = "ibft" ] && [ "$ibft_mod" != "bnx2i" ]; then echo -n "rd.iscsi.ibft=1 " fi echo -n "rd.iscsi.firmware=1 " @@ -62,8 +61,7 @@ install_ibft() { install_iscsiroot() { local devpath=$1 local scsi_path iscsi_lun session c d conn host flash - local iscsi_session iscsi_address iscsi_port iscsi_targetname iscsi_tpgt - local bootproto + local iscsi_session iscsi_address iscsi_port iscsi_targetname scsi_path=${devpath%%/block*} [ "$scsi_path" = "$devpath" ] && return 1 @@ -77,32 +75,32 @@ install_iscsiroot() { [ "$host" = "$session" ] && return 1 iscsi_host=${host##*/} - for flash in ${host}/flashnode_sess-*; do + for flash in "${host}"/flashnode_sess-*; do [ -f "$flash" ] || continue [ ! -e "$flash/is_boot_target" ] && continue - is_boot=$(cat $flash/is_boot_target) - if [ $is_boot -eq 1 ]; then + is_boot=$(cat "$flash"/is_boot_target) + if [ "$is_boot" -eq 1 ]; then # qla4xxx flashnode session; skip iBFT discovery - iscsi_initiator=$(cat /sys/class/iscsi_host/${iscsi_host}/initiatorname) + iscsi_initiator=$(cat /sys/class/iscsi_host/"${iscsi_host}"/initiatorname) echo "rd.iscsi.initiator=${iscsi_initiator}" return fi done - for d in ${session}/*; do + for d in "${session}"/*; do case $d in *connection*) c=${d##*/} conn=${d}/iscsi_connection/${c} - if [ -d ${conn} ]; then - iscsi_address=$(cat ${conn}/persistent_address) - iscsi_port=$(cat ${conn}/persistent_port) + if [ -d "${conn}" ]; then + iscsi_address=$(cat "${conn}"/persistent_address) + iscsi_port=$(cat "${conn}"/persistent_port) fi ;; *session) - if [ -d ${d}/${iscsi_session} ]; then - iscsi_initiator=$(cat ${d}/${iscsi_session}/initiatorname) - iscsi_targetname=$(cat ${d}/${iscsi_session}/targetname) + if [ -d "${d}"/"${iscsi_session}" ]; then + iscsi_initiator=$(cat "${d}"/"${iscsi_session}"/initiatorname) + iscsi_targetname=$(cat "${d}"/"${iscsi_session}"/targetname) fi ;; esac @@ -142,10 +140,10 @@ install_softiscsi() { [[ -L "/sys/dev/block/$_dev" ]] || return iscsi_dev=$( - cd -P /sys/dev/block/$_dev - echo $PWD + cd -P /sys/dev/block/"$_dev" || exit + echo "$PWD" ) - install_iscsiroot $iscsi_dev + install_iscsiroot "$iscsi_dev" } for_each_host_dev_and_slaves_all is_softiscsi || return 255 @@ -174,10 +172,11 @@ installkernel() { # called by dracut cmdline() { - local _iscsiconf=$(install_ibft) + local _iscsiconf + _iscsiconf=$(install_ibft) { if [ "$_iscsiconf" ]; then - echo ${_iscsiconf} + echo "${_iscsiconf}" else install_softiscsi fi @@ -191,23 +190,27 @@ install() { inst_multiple umount iscsi-iname iscsiadm iscsid inst_multiple -o \ - $systemdsystemunitdir/iscsid.socket \ - $systemdsystemunitdir/iscsid.service \ - $systemdsystemunitdir/iscsiuio.service \ - $systemdsystemunitdir/iscsiuio.socket \ - $systemdsystemunitdir/sockets.target.wants/iscsid.socket \ - $systemdsystemunitdir/sockets.target.wants/iscsiuio.socket + "$systemdsystemunitdir"/iscsid.socket \ + "$systemdsystemunitdir"/iscsid.service \ + "$systemdsystemunitdir"/iscsiuio.service \ + "$systemdsystemunitdir"/iscsiuio.socket \ + "$systemdsystemunitdir"/sockets.target.wants/iscsid.socket \ + "$systemdsystemunitdir"/sockets.target.wants/iscsiuio.socket if [[ $hostonly ]]; then + local -a _filenames + inst_dir /etc/iscsi - inst_multiple $(find /etc/iscsi -type f) + mapfile -t -d '' _filenames < <(find /etc/iscsi -type f -print0) + inst_multiple "${_filenames[@]}" else inst_simple /etc/iscsi/iscsid.conf fi # Detect iBFT and perform mandatory steps if [[ $hostonly_cmdline == "yes" ]]; then - local _iscsiconf=$(cmdline) + local _iscsiconf + _iscsiconf=$(cmdline) [[ $_iscsiconf ]] && printf "%s\n" "$_iscsiconf" >> "${initdir}/etc/cmdline.d/95iscsi.conf" fi @@ -219,24 +222,22 @@ install() { inst "$moddir/mount-lun.sh" "/bin/mount-lun.sh" else inst_multiple -o \ - $systemdsystemunitdir/iscsi.service \ - $systemdsystemunitdir/iscsid.service \ - $systemdsystemunitdir/iscsid.socket \ - $systemdsystemunitdir/iscsiuio.service \ - $systemdsystemunitdir/iscsiuio.socket \ + "$systemdsystemunitdir"/iscsi.service \ + "$systemdsystemunitdir"/iscsid.service \ + "$systemdsystemunitdir"/iscsid.socket \ + "$systemdsystemunitdir"/iscsiuio.service \ + "$systemdsystemunitdir"/iscsiuio.socket \ iscsiadm iscsid for i in \ iscsid.socket \ - iscsiuio.socket \ - ${NULL}; do + iscsiuio.socket; do $SYSTEMCTL -q --root "$initdir" enable "$i" done for i in \ iscsid.service \ - iscsiuio.service \ - ${NULL}; do + iscsiuio.service; do $SYSTEMCTL -q --root "$initdir" add-wants basic.target "$i" done diff --git a/modules.d/95iscsi/mount-lun.sh b/modules.d/95iscsi/mount-lun.sh index 1a47dea79..c1869844e 100755 --- a/modules.d/95iscsi/mount-lun.sh +++ b/modules.d/95iscsi/mount-lun.sh @@ -1,13 +1,13 @@ #!/bin/sh -if [ -z $iscsi_lun ]; then +if [ -z "$iscsi_lun" ]; then iscsi_lun=0 fi NEWROOT=${NEWROOT:-/sysroot} -for disk in /dev/disk/by-path/*-iscsi-*-$iscsi_lun; do - if mount -t ${fstype:-auto} -o "$rflags" $disk $NEWROOT; then - if [ ! -d $NEWROOT/proc ]; then - umount $disk +for disk in /dev/disk/by-path/*-iscsi-*-"$iscsi_lun"; do + if mount -t "${fstype:-auto}" -o "$rflags" "$disk" "$NEWROOT"; then + if [ ! -d "$NEWROOT"/proc ]; then + umount "$disk" continue fi break diff --git a/modules.d/95iscsi/parse-iscsiroot.sh b/modules.d/95iscsi/parse-iscsiroot.sh index 9303c9ee5..75747111e 100755 --- a/modules.d/95iscsi/parse-iscsiroot.sh +++ b/modules.d/95iscsi/parse-iscsiroot.sh @@ -84,7 +84,7 @@ if [ -n "$iscsi_firmware" ]; then modprobe -b -q iscsi_boot_sysfs 2> /dev/null modprobe -b -q iscsi_ibft # if no ip= is given, but firmware - echo "${DRACUT_SYSTEMD+systemctl is-active initrd-root-device.target || }[ -f '/tmp/iscsistarted-firmware' ]" > $hookdir/initqueue/finished/iscsi_started.sh + echo "${DRACUT_SYSTEMD+systemctl is-active initrd-root-device.target || }[ -f '/tmp/iscsistarted-firmware' ]" > "$hookdir"/initqueue/finished/iscsi_started.sh initqueue --unique --online /sbin/iscsiroot online "iscsi:" "$NEWROOT" initqueue --unique --onetime --timeout /sbin/iscsiroot timeout "iscsi:" "$NEWROOT" initqueue --unique --onetime --settled /sbin/iscsiroot online "iscsi:" "'$NEWROOT'" @@ -118,14 +118,14 @@ if arg=$(getarg rd.iscsi.initiator -d iscsi_initiator=) && [ -n "$arg" ] && ! [ fi # If not given on the cmdline and initiator-name available via iBFT -if [ -z $iscsi_initiator ] && [ -f /sys/firmware/ibft/initiator/initiator-name ] && ! [ -f /tmp/iscsi_set_initiator ]; then - iscsi_initiator=$(while read line || [ -n "$line" ]; do echo $line; done < /sys/firmware/ibft/initiator/initiator-name) +if [ -z "$iscsi_initiator" ] && [ -f /sys/firmware/ibft/initiator/initiator-name ] && ! [ -f /tmp/iscsi_set_initiator ]; then + iscsi_initiator=$(while read -r line || [ -n "$line" ]; do echo "$line"; done < /sys/firmware/ibft/initiator/initiator-name) if [ -n "$iscsi_initiator" ]; then echo "InitiatorName=$iscsi_initiator" > /run/initiatorname.iscsi rm -f /etc/iscsi/initiatorname.iscsi mkdir -p /etc/iscsi ln -fs /run/initiatorname.iscsi /etc/iscsi/initiatorname.iscsi - > /tmp/iscsi_set_initiator + : > /tmp/iscsi_set_initiator if [ -n "$DRACUT_SYSTEMD" ]; then systemctl try-restart iscsid # FIXME: iscsid is not yet ready, when the service is :-/ @@ -145,10 +145,11 @@ for nroot in $(getargs netroot); do type parse_iscsi_root > /dev/null 2>&1 || . /lib/net-lib.sh parse_iscsi_root "$nroot" || return 1 netroot_enc=$(str_replace "$nroot" '/' '\2f') - echo "${DRACUT_SYSTEMD+systemctl is-active initrd-root-device.target || }[ -f '/tmp/iscsistarted-$netroot_enc' ]" > $hookdir/initqueue/finished/iscsi_started.sh + echo "${DRACUT_SYSTEMD+systemctl is-active initrd-root-device.target || }[ -f '/tmp/iscsistarted-$netroot_enc' ]" > "$hookdir"/initqueue/finished/iscsi_started.sh done # Done, all good! +# shellcheck disable=SC2034 rootok=1 # Shut up init error check