Browse Source

fix(cms): shellcheck for modules.d/80cms

master
Harald Hoyer 3 years ago committed by Harald Hoyer
parent
commit
e08c644ee6
  1. 0
      modules.d/80cms/.shchkdir
  2. 60
      modules.d/80cms/cms-write-ifcfg.sh
  3. 21
      modules.d/80cms/cmsifup.sh
  4. 66
      modules.d/80cms/cmssetup.sh
  5. 1
      modules.d/80cms/module-setup.sh

0
modules.d/80cms/.shchkdir

60
modules.d/80cms/cms-write-ifcfg.sh

@ -2,14 +2,17 @@ @@ -2,14 +2,17 @@

type getarg > /dev/null 2>&1 || . /lib/dracut-lib.sh

mkdir -m 0755 -p /run/initramfs/state/etc/sysconfig/network-scripts
OLD_UMASK=$(umask)
umask 0022
mkdir -p /run/initramfs/state/etc/sysconfig/network-scripts
umask "$OLD_UMASK"

function cms_write_config() {
. /tmp/cms.conf
SUBCHANNELS="$(echo $SUBCHANNELS | sed 'y/ABCDEF/abcdef/')"
SUBCHANNELS="$(echo "$SUBCHANNELS" | sed 'y/ABCDEF/abcdef/')"
OLDIFS=$IFS
IFS=,
read -a subch_array <<< "indexzero,$SUBCHANNELS"
read -ra subch_array <<< "indexzero,$SUBCHANNELS"
IFS=$OLDIFS
devbusid=${subch_array[1]}
if [ "$NETTYPE" = "ctc" ]; then
@ -18,7 +21,7 @@ function cms_write_config() { @@ -18,7 +21,7 @@ function cms_write_config() {
driver=$NETTYPE
fi

DEVICE=$(cd /sys/devices/${driver}/$devbusid/net/ && set -- * && [ "$1" != "*" ] && echo $1)
DEVICE=$(cd "/sys/devices/${driver}/$devbusid/net/" && set -- * && [ "$1" != "*" ] && echo "$1")

uuid=$(cat /proc/sys/kernel/random/uuid)

@ -37,7 +40,7 @@ EOF @@ -37,7 +40,7 @@ EOF
echo "NETWORKING=yes" >> /etc/sysconfig/network
fi

cat > $IFCFGFILE << EOF
cat > "$IFCFGFILE" << EOF
DEVICE=$DEVICE
UUID=$uuid
ONBOOT=yes
@ -46,14 +49,14 @@ MTU=$MTU @@ -46,14 +49,14 @@ MTU=$MTU
SUBCHANNELS=$SUBCHANNELS
EOF
if [ "$ipv6" ]; then
cat >> $IFCFGFILE << EOF
cat >> "$IFCFGFILE" << EOF
IPV6INIT=yes
IPV6_AUTOCONF=no
IPV6ADDR=$IPADDR/$NETMASK
IPV6_DEFAULTGW=$GATEWAY
EOF
else
cat >> $IFCFGFILE << EOF
cat >> "$IFCFGFILE" << EOF
IPADDR=$IPADDR
NETMASK=$NETMASK
BROADCAST=$BROADCAST
@ -61,41 +64,28 @@ GATEWAY=$GATEWAY @@ -61,41 +64,28 @@ GATEWAY=$GATEWAY
EOF
fi
if [ "$ipv6" ]; then
DNS1=$(
set -- ${DNS/,/ }
echo $1
)
DNS2=$(
set -- ${DNS/,/ }
echo $2
)
# shellcheck disable=SC2153
IFS="," read -r DNS1 DNS2 _ <<< "$DNS"
else
DNS1=$(
set -- ${DNS/:/ }
echo $1
)
DNS2=$(
set -- ${DNS/:/ }
echo $2
)
IFS=":" read -r DNS1 DNS2 _ <<< "$DNS"
fi
# real DNS config for NetworkManager to generate /etc/resolv.conf
[ "$DNS1" != "" ] && echo "DNS1=$DNS1" >> $IFCFGFILE
[ "$DNS2" != "" ] && echo "DNS2=$DNS2" >> $IFCFGFILE
[[ $DNS1 ]] && echo "DNS1=$DNS1" >> "$IFCFGFILE"
[[ $DNS2 ]] && echo "DNS2=$DNS2" >> "$IFCFGFILE"
# just to please loader's readNetInfo && writeEnabledNetInfo
# which eats DNS1,DNS2,... and generates it themselves based on DNS
if [ "$ipv6" ]; then
[ "$DNS" != "" ] && echo "DNS=\"$DNS\"" >> $IFCFGFILE
if [[ $ipv6 ]]; then
[[ $DNS ]] && echo "DNS=\"$DNS\"" >> "$IFCFGFILE"
else
[ "$DNS" != "" ] && echo "DNS=\"${DNS/:/,}\"" >> $IFCFGFILE
[[ $DNS ]] && echo "DNS=\"${DNS/:/,}\"" >> "$IFCFGFILE"
fi
# colons in SEARCHDNS already replaced with spaces above for /etc/resolv.conf
[ "$SEARCHDNS" != "" ] && echo "DOMAIN=\"$SEARCHDNS\"" >> $IFCFGFILE
[ "$NETTYPE" != "" ] && echo "NETTYPE=$NETTYPE" >> $IFCFGFILE
[ "$PEERID" != "" ] && echo "PEERID=$PEERID" >> $IFCFGFILE
[ "$PORTNAME" != "" ] && echo "PORTNAME=$PORTNAME" >> $IFCFGFILE
[ "$CTCPROT" != "" ] && echo "CTCPROT=$CTCPROT" >> $IFCFGFILE
[ "$MACADDR" != "" ] && echo "MACADDR=$MACADDR" >> $IFCFGFILE
[[ $SEARCHDNS ]] && echo "DOMAIN=\"$SEARCHDNS\"" >> "$IFCFGFILE"
[[ $NETTYPE ]] && echo "NETTYPE=$NETTYPE" >> "$IFCFGFILE"
[[ $PEERID ]] && echo "PEERID=$PEERID" >> "$IFCFGFILE"
[[ $PORTNAME ]] && echo "PORTNAME=$PORTNAME" >> "$IFCFGFILE"
[[ $CTCPROT ]] && echo "CTCPROT=$CTCPROT" >> "$IFCFGFILE"
[[ $MACADDR ]] && echo "MACADDR=$MACADDR" >> "$IFCFGFILE"
optstr=""
for option in LAYER2 PORTNO; do
[ -z "${!option}" ] && continue
@ -103,7 +93,7 @@ EOF @@ -103,7 +93,7 @@ EOF
optstr=${optstr}$(echo ${option} | sed 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/')"="${!option}
done
# write single quotes since network.py removes double quotes but we need quotes
echo "OPTIONS='$optstr'" >> $IFCFGFILE
echo "OPTIONS='$optstr'" >> "$IFCFGFILE"
unset option
unset optstr
unset DNS1

21
modules.d/80cms/cmsifup.sh

@ -17,23 +17,10 @@ if [ "$ipv6" ] && ! str_starts "$GATEWAY" "["; then @@ -17,23 +17,10 @@ if [ "$ipv6" ] && ! str_starts "$GATEWAY" "["; then
fi

if [ "$ipv6" ]; then
DNS1=$(
set -- ${DNS/,/ }
echo $1
)
DNS2=$(
set -- ${DNS/,/ }
echo $2
)
# shellcheck disable=SC2153
IFS="," read -r DNS1 DNS2 _ <<< "$DNS"
else
DNS1=$(
set -- ${DNS/:/ }
echo $1
)
DNS2=$(
set -- ${DNS/:/ }
echo $2
)
IFS=":" read -r DNS1 DNS2 _ <<< "$DNS"
fi

{
@ -43,7 +30,7 @@ fi @@ -43,7 +30,7 @@ fi
done
} > /etc/cmdline.d/80-cms.conf

[ -e "/tmp/net.ifaces" ] && read IFACES < /tmp/net.ifaces
[ -e "/tmp/net.ifaces" ] && read -r IFACES < /tmp/net.ifaces
IFACES="$IFACES $DEVICE"
echo "$IFACES" >> /tmp/net.ifaces


66
modules.d/80cms/cmssetup.sh

@ -15,21 +15,21 @@ function sysecho() { @@ -15,21 +15,21 @@ function sysecho() {
fi
done
local status
read status < "$file"
if [[ $status != $* ]]; then
[ -f "$file" ] && echo $* > "$file"
read -r status < "$file"
if [[ $status != "$*" ]]; then
[ -f "$file" ] && echo "$*" > "$file"
fi
}

function dasd_settle() {
local dasd_status=/sys/bus/ccw/devices/$1/status
if [ ! -f $dasd_status ]; then
if [ ! -f "$dasd_status" ]; then
return 1
fi
local i=1
while [ $i -le 60 ]; do
local status
read status < $dasd_status
read -r status < "$dasd_status"
case $status in
online | unformatted)
return 0
@ -44,8 +44,8 @@ function dasd_settle() { @@ -44,8 +44,8 @@ function dasd_settle() {
}

function dasd_settle_all() {
for dasdccw in $(while read line || [ -n "$line" ]; do echo "${line%%(*}"; done < /proc/dasd/devices); do
if ! dasd_settle $dasdccw; then
for dasdccw in $(while read -r line || [ -n "$line" ]; do echo "${line%%(*}"; done < /proc/dasd/devices); do
if ! dasd_settle "$dasdccw"; then
echo $"Could not access DASD $dasdccw in time"
return 1
fi
@ -71,36 +71,36 @@ function readcmsfile() { # $1=dasdport $2=filename @@ -71,36 +71,36 @@ function readcmsfile() { # $1=dasdport $2=filename
local ret=0
if [ $# -ne 2 ]; then return; fi
# precondition: udevd created dasda block device node
if ! dasd_cio_free -d $1; then
if ! dasd_cio_free -d "$1"; then
echo $"DASD $1 could not be cleared from device blacklist"
return 1
fi

modprobe dasd_mod dasd=$CMSDASD
modprobe dasd_mod dasd="$CMSDASD"
modprobe dasd_eckd_mod
udevadm settle

# precondition: dasd_eckd_mod driver incl. dependencies loaded,
# dasd_mod must be loaded without setting any DASD online
dev=$(canonicalize_devno $1)
dev=$(canonicalize_devno "$1")
numcpus=$(
while read line || [ -n "$line" ]; do
while read -r line || [ -n "$line" ]; do
if strstr "$line" "# processors"; then
echo ${line##*:}
echo "${line##*:}"
break
fi
done < /proc/cpuinfo
)

if [ ${numcpus} -eq 1 ]; then
echo 1 > /sys/bus/ccw/devices/$dev/online
if [ "${numcpus}" -eq 1 ]; then
echo 1 > /sys/bus/ccw/devices/"$dev"/online
else
if ! sysecho /sys/bus/ccw/devices/$dev/online 1; then
if ! sysecho /sys/bus/ccw/devices/"$dev"/online 1; then
echo $"DASD $dev could not be set online"
return 1
fi
udevadm settle
if ! dasd_settle $dev; then
if ! dasd_settle "$dev"; then
echo $"Could not access DASD $dev in time"
return 1
fi
@ -109,15 +109,15 @@ function readcmsfile() { # $1=dasdport $2=filename @@ -109,15 +109,15 @@ function readcmsfile() { # $1=dasdport $2=filename
udevadm settle

devname=$(
cd /sys/bus/ccw/devices/$dev/block
cd /sys/bus/ccw/devices/"$dev"/block || exit
set -- *
[ -b /dev/$1 ] && echo $1
[ -b /dev/"$1" ] && echo "$1"
)
devname=${devname:-dasda}

[[ -d /mnt ]] || mkdir -p /mnt
if cmsfs-fuse --to=UTF-8 -a /dev/$devname /mnt; then
cat /mnt/$2 > /run/initramfs/$2
if cmsfs-fuse --to=UTF-8 -a /dev/"$devname" /mnt; then
cat /mnt/"$2" > /run/initramfs/"$2"
umount /mnt || umount -l /mnt
udevadm settle
else
@ -125,7 +125,7 @@ function readcmsfile() { # $1=dasdport $2=filename @@ -125,7 +125,7 @@ function readcmsfile() { # $1=dasdport $2=filename
ret=1
fi

if ! sysecho /sys/bus/ccw/devices/$dev/online 0; then
if ! sysecho /sys/bus/ccw/devices/"$dev"/online 0; then
echo $"DASD $dev could not be set offline again"
#return 1
fi
@ -133,8 +133,8 @@ function readcmsfile() { # $1=dasdport $2=filename @@ -133,8 +133,8 @@ function readcmsfile() { # $1=dasdport $2=filename

# unbind all dasds to unload the dasd modules for a clean start
(
cd /sys/bus/ccw/drivers/dasd-eckd
for i in *.*; do echo $i > unbind; done
cd /sys/bus/ccw/drivers/dasd-eckd || exit
for i in *.*; do echo "$i" > unbind; done
)
udevadm settle
modprobe -r dasd_eckd_mod
@ -148,11 +148,11 @@ function readcmsfile() { # $1=dasdport $2=filename @@ -148,11 +148,11 @@ function readcmsfile() { # $1=dasdport $2=filename

processcmsfile() {
source /tmp/cms.conf
SUBCHANNELS="$(echo $SUBCHANNELS | sed 'y/ABCDEF/abcdef/')"
SUBCHANNELS="$(echo "$SUBCHANNELS" | sed 'y/ABCDEF/abcdef/')"

if [[ $NETTYPE ]]; then
(
echo -n $NETTYPE,$SUBCHANNELS
echo -n "$NETTYPE","$SUBCHANNELS"
[[ $PORTNAME ]] && echo -n ",portname=$PORTNAME"
[[ $LAYER2 ]] && echo -n ",layer2=$LAYER2"
[[ $NETTYPE == "ctc" ]] && [[ $CTCPROT ]] && echo -n ",protocol=$CTCPROT"
@ -161,7 +161,7 @@ processcmsfile() { @@ -161,7 +161,7 @@ processcmsfile() {

OLDIFS=$IFS
IFS=,
read -a subch_array <<< "indexzero,$SUBCHANNELS"
read -r -a subch_array <<< "indexzero,$SUBCHANNELS"
IFS=$OLDIFS
devbusid=${subch_array[1]}
if [ "$NETTYPE" = "ctc" ]; then
@ -170,9 +170,11 @@ processcmsfile() { @@ -170,9 +170,11 @@ processcmsfile() {
driver=$NETTYPE
fi

# shellcheck disable=SC2016
printf 'SUBSYSTEM=="net", ACTION=="add", DRIVERS=="%s", KERNELS=="%s", ENV{INTERFACE}=="?*", RUN+="/sbin/initqueue --onetime --unique --name cmsifup-$name /sbin/cmsifup $name"\n' "$driver" "$devbusid" > /etc/udev/rules.d/99-cms.rules
# remove the default net rules
rm -f -- /etc/udev/rules.d/91-default-net.rules
# shellcheck disable=SC2016
[[ -f /etc/udev/rules.d/90-net.rules ]] \
|| printf 'SUBSYSTEM=="net", ACTION=="online", RUN+="/sbin/initqueue --onetime --env netif=$name source_hook initqueue/online"\n' >> /etc/udev/rules.d/99-cms.rules
udevadm control --reload
@ -180,14 +182,14 @@ processcmsfile() { @@ -180,14 +182,14 @@ processcmsfile() {
fi

if [[ $DASD ]] && [[ $DASD != "none" ]]; then
echo $DASD | normalize_dasd_arg > /etc/dasd.conf
echo "$DASD" | normalize_dasd_arg > /etc/dasd.conf
echo "options dasd_mod dasd=$DASD" > /etc/modprobe.d/dasd_mod.conf
dasd_cio_free
fi

unset _do_zfcp
for i in ${!FCP_*}; do
echo "${!i}" | while read port rest || [ -n "$port" ]; do
echo "${!i}" | while read -r port rest || [ -n "$port" ]; do
case $port in
*.*.*) ;;

@ -198,7 +200,7 @@ processcmsfile() { @@ -198,7 +200,7 @@ processcmsfile() {
port="0.0.$port"
;;
esac
echo $port $rest >> /etc/zfcp.conf
echo "$port" "$rest" >> /etc/zfcp.conf
done
_do_zfcp=1
done
@ -211,9 +213,9 @@ processcmsfile() { @@ -211,9 +213,9 @@ processcmsfile() {

# Parse configuration
if [ -n "$CMSDASD" -a -n "$CMSCONFFILE" ]; then
if readcmsfile $CMSDASD $CMSCONFFILE; then
ln -s /run/initramfs/$CMSCONFFILE /tmp/$CMSCONFFILE
ln -s /run/initramfs/$CMSCONFFILE /tmp/cms.conf
if readcmsfile "$CMSDASD" "$CMSCONFFILE"; then
ln -s /run/initramfs/"$CMSCONFFILE" /tmp/"$CMSCONFFILE"
ln -s /run/initramfs/"$CMSCONFFILE" /tmp/cms.conf
processcmsfile
fi
fi

1
modules.d/80cms/module-setup.sh

@ -25,6 +25,7 @@ install() { @@ -25,6 +25,7 @@ install() {
inst_hook pre-trigger 30 "$moddir/cmssetup.sh"
inst_hook pre-pivot 95 "$moddir/cms-write-ifcfg.sh"
inst_script "$moddir/cmsifup.sh" /sbin/cmsifup
# shellcheck disable=SC2046
inst_multiple /etc/cmsfs-fuse/filetypes.conf /etc/udev/rules.d/99-fuse.rules /etc/fuse.conf \
cmsfs-fuse fusermount ulockmgr_server bash insmod rmmod cat normalize_dasd_arg sed \
$(rpm -ql s390utils-base) awk getopt

Loading…
Cancel
Save