Fixed quoting issues found by shellcheck, no feature
change. This should fix many errors when there is space
in any shell variables, eg. dump target's name/path/id.
False positives are marked with "# shellcheck disable=SCXXXX", for
example, args are expected to split so it should not be quoted.
And replaced some `cut -d ' ' -fX` with `awk '{print $X}'` since cut
is fragile, and doesn't work well with any quoted strings that have
redundant space.
Following quoting related issues are fixed (check the link
for example code and what could go wrong):
https://github.com/koalaman/shellcheck/wiki/SC2046
https://github.com/koalaman/shellcheck/wiki/SC2053
https://github.com/koalaman/shellcheck/wiki/SC2068
https://github.com/koalaman/shellcheck/wiki/SC2086
https://github.com/koalaman/shellcheck/wiki/SC2206
Signed-off-by: Kairui Song <kasong(a)redhat.com>
---
dracut-early-kdump-module-setup.sh | 2 +-
dracut-module-setup.sh | 261 +++++++++++++++--------------
kdumpctl | 104 ++++++------
mkdumprd | 69 ++++----
4 files changed, 220 insertions(+), 216 deletions(-)
diff --git a/dracut-early-kdump-module-setup.sh b/dracut-early-kdump-module-setup.sh
index 00546e01..83e067c8 100755
--- a/dracut-early-kdump-module-setup.sh
+++ b/dracut-early-kdump-module-setup.sh
@@ -25,7 +25,7 @@ prepare_kernel_initrd() {
prepare_kdump_bootinfo
# $kernel is a variable from dracut
- if [[ "$KDUMP_KERNELVER" != $kernel ]]; then
+ if [[ "$KDUMP_KERNELVER" != "$kernel" ]]; then
dwarn "Using kernel version '$KDUMP_KERNELVER' for early
kdump," \
"but the initramfs is generated for kernel version
'$kernel'"
fi
diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh
index 1e875016..600bdc51 100755
--- a/dracut-module-setup.sh
+++ b/dracut-module-setup.sh
@@ -53,7 +53,7 @@ depends() {
_dep="$_dep network"
fi
- echo $_dep
+ echo "$_dep"
}
kdump_is_bridge() {
@@ -65,7 +65,7 @@ kdump_is_bond() {
}
kdump_is_team() {
- [[ -f /usr/bin/teamnl ]] && teamnl $1 ports &> /dev/null
+ [[ -f /usr/bin/teamnl ]] && teamnl "$1" ports &> /dev/null
}
kdump_is_vlan() {
@@ -77,9 +77,9 @@ source_ifcfg_file() {
local ifcfg_file
dwarning "Network Scripts are deprecated. You are encouraged to set up network
by NetworkManager."
- ifcfg_file=$(get_ifcfg_filename $1)
+ ifcfg_file=$(get_ifcfg_filename "$1")
if [[ -f "${ifcfg_file}" ]]; then
- . ${ifcfg_file}
+ . "${ifcfg_file}"
else
dwarning "The ifcfg file of $1 is not found!"
fi
@@ -93,7 +93,8 @@ kdump_setup_dns() {
local _dnsfile=${initdir}/etc/cmdline.d/42dns.conf
_tmp=$(get_nmcli_value_by_field "$_nm_show_cmd" "IP4.DNS")
- array=(${_tmp//|/ })
+ # shellcheck disable=SC2206
+ array=( ${_tmp//|/ } )
if [[ ${array[*]} ]]; then
for _dns in "${array[@]}"
do
@@ -108,10 +109,10 @@ kdump_setup_dns() {
while read -r content;
do
- _nameserver=$(echo $content | grep ^nameserver)
+ _nameserver=$(echo "$content" | grep ^nameserver)
[[ -z "$_nameserver" ]] && continue
- _dns=$(echo $_nameserver | cut -d' ' -f2)
+ _dns=$(echo "$_nameserver" | awk '{print $2}')
[[ -z "$_dns" ]] && continue
if [[ ! -f $_dnsfile ]] || ! grep -q "$_dns" "$_dnsfile" ;
then
@@ -237,14 +238,14 @@ kdump_static_ip() {
local _netdev="$1" _srcaddr="$2" kdumpnic="$3"
_ipv6_flag
local _netmask _gateway _ipaddr _target _nexthop _prefix
- _ipaddr=$(ip addr show dev $_netdev permanent | awk "/ $_srcaddr\/.* /{print
\$2}")
+ _ipaddr=$(ip addr show dev "$_netdev" permanent | awk "/ $_srcaddr\/.*
/{print \$2}")
- if is_ipv6_address $_srcaddr; then
+ if is_ipv6_address "$_srcaddr"; then
_ipv6_flag="-6"
fi
if [[ -n "$_ipaddr" ]]; then
- _gateway=$(ip $_ipv6_flag route list dev $_netdev | \
+ _gateway=$(ip $_ipv6_flag route list dev "$_netdev" | \
awk '/^default /{print $3}' | head -n 1)
if [[ "x" != "x"$_ipv6_flag ]]; then
@@ -266,23 +267,23 @@ kdump_static_ip() {
/sbin/ip $_ipv6_flag route show | grep -v default |\
grep ".*via.* $_netdev " | grep -v "^[[:space:]]*nexthop" |\
while read -r _route; do
- _target=$(echo $_route | cut -d ' ' -f1)
- _nexthop=$(echo $_route | cut -d ' ' -f3)
+ _target=$(echo "$_route" | awk '{print $1}')
+ _nexthop=$(echo "$_route" | awk '{print $3}')
if [[ "x" != "x"$_ipv6_flag ]]; then
_target="[$_target]"
_nexthop="[$_nexthop]"
fi
echo "rd.route=$_target:$_nexthop:$kdumpnic"
- done >> ${initdir}/etc/cmdline.d/45route-static.conf
+ done >> "${initdir}/etc/cmdline.d/45route-static.conf"
- kdump_handle_mulitpath_route $_netdev $_srcaddr $kdumpnic
+ kdump_handle_mulitpath_route "$_netdev" "$_srcaddr"
"$kdumpnic"
}
kdump_handle_mulitpath_route() {
local _netdev="$1" _srcaddr="$2" kdumpnic="$3"
_ipv6_flag
local _target _nexthop _route _weight _max_weight _rule
- if is_ipv6_address $_srcaddr; then
+ if is_ipv6_address "$_srcaddr"; then
_ipv6_flag="-6"
fi
@@ -308,20 +309,20 @@ kdump_handle_mulitpath_route() {
_target=$(echo "$_route" | cut -d ' ' -f1)
_rule="" _max_weight=0 _weight=0
fi
- done >> ${initdir}/etc/cmdline.d/45route-static.conf\
+ done >> "${initdir}/etc/cmdline.d/45route-static.conf"\
<<< "$(/sbin/ip $_ipv6_flag route show)"
- [[ -n $_rule ]] && echo $_rule >>
${initdir}/etc/cmdline.d/45route-static.conf
+ [[ -n $_rule ]] && echo "$_rule" >>
"${initdir}/etc/cmdline.d/45route-static.conf"
}
kdump_get_mac_addr() {
- cat /sys/class/net/$1/address
+ cat "/sys/class/net/$1/address"
}
#Bonding or team master modifies the mac address
#of its slaves, we should use perm address
kdump_get_perm_addr() {
- local addr=$(ethtool -P $1 | sed -e 's/Permanent address: //')
+ local addr=$(ethtool -P "$1" | sed -e 's/Permanent address: //')
if [[ -z "$addr" ]] || [[ "$addr" = "00:00:00:00:00:00"
]]
then
derror "Can't get the permanent address of $1"
@@ -366,9 +367,9 @@ kdump_setup_bridge() {
elif kdump_is_vlan "$_dev"; then
kdump_setup_vlan "$_dev"
else
- _mac=$(kdump_get_mac_addr $_dev)
- _kdumpdev=$(kdump_setup_ifname $_dev)
- echo -n " ifname=$_kdumpdev:$_mac" >>
${initdir}/etc/cmdline.d/41bridge.conf
+ _mac=$(kdump_get_mac_addr "$_dev")
+ _kdumpdev=$(kdump_setup_ifname "$_dev")
+ echo -n " ifname=$_kdumpdev:$_mac" >>
"${initdir}/etc/cmdline.d/41bridge.conf"
fi
_brif+="$_kdumpdev,"
done
@@ -382,10 +383,10 @@ kdump_setup_bond() {
local _netdev="$1"
local _nm_show_cmd="$2"
local _dev _mac _slaves _kdumpdev _bondoptions
- for _dev in $(cat /sys/class/net/$_netdev/bonding/slaves); do
- _mac=$(kdump_get_perm_addr $_dev)
- _kdumpdev=$(kdump_setup_ifname $_dev)
- echo -n " ifname=$_kdumpdev:$_mac" >>
${initdir}/etc/cmdline.d/42bond.conf
+ for _dev in $(cat "/sys/class/net/$_netdev/bonding/slaves"); do
+ _mac=$(kdump_get_perm_addr "$_dev")
+ _kdumpdev=$(kdump_setup_ifname "$_dev")
+ echo -n " ifname=$_kdumpdev:$_mac" >>
"${initdir}/etc/cmdline.d/42bond.conf"
_slaves+="$_kdumpdev,"
done
echo -n " bond=$_netdev:${_slaves%,}" >>
"${initdir}/etc/cmdline.d/42bond.conf"
@@ -394,8 +395,8 @@ kdump_setup_bond() {
if [[ -z "$_bondoptions" ]]; then
dwarning "Failed to get bond configuration via nmlci output. Now try
sourcing ifcfg script."
- source_ifcfg_file $_netdev
- _bondoptions="$(echo $BONDING_OPTS | xargs echo | tr " "
",")"
+ source_ifcfg_file "$_netdev"
+ _bondoptions="$(echo "$BONDING_OPTS" | xargs echo | tr "
" ",")"
fi
if [[ -z "$_bondoptions" ]]; then
@@ -403,36 +404,36 @@ kdump_setup_bond() {
exit 1
fi
- echo ":$_bondoptions" >> ${initdir}/etc/cmdline.d/42bond.conf
+ echo ":$_bondoptions" >>
"${initdir}/etc/cmdline.d/42bond.conf"
}
kdump_setup_team() {
local _netdev=$1
local _dev _mac _slaves _kdumpdev
- for _dev in $(teamnl $_netdev ports | awk -F':' '{print $2}'); do
- _mac=$(kdump_get_perm_addr $_dev)
- _kdumpdev=$(kdump_setup_ifname $_dev)
- echo -n " ifname=$_kdumpdev:$_mac" >>
${initdir}/etc/cmdline.d/44team.conf
+ for _dev in $(teamnl "$_netdev" ports | awk -F':' '{print
$2}'); do
+ _mac=$(kdump_get_perm_addr "$_dev")
+ _kdumpdev=$(kdump_setup_ifname "$_dev")
+ echo -n " ifname=$_kdumpdev:$_mac" >>
"${initdir}/etc/cmdline.d/44team.conf"
_slaves+="$_kdumpdev,"
done
echo " team=$_netdev:${_slaves%,}" >>
"${initdir}/etc/cmdline.d/44team.conf"
#Buggy version teamdctl outputs to stderr!
#Try to use the latest version of teamd.
- teamdctl "$_netdev" config dump > ${initdir}/tmp/$$-$_netdev.conf
+ teamdctl "$_netdev" config dump >
"${initdir}/tmp/$$-$_netdev.conf"
if [[ $? -ne 0 ]]
then
derror "teamdctl failed."
exit 1
fi
inst_dir /etc/teamd
- inst_simple ${initdir}/tmp/$$-$_netdev.conf "/etc/teamd/$_netdev.conf"
- rm -f ${initdir}/tmp/$$-$_netdev.conf
+ inst_simple "${initdir}/tmp/$$-$_netdev.conf"
"/etc/teamd/$_netdev.conf"
+ rm -f "${initdir}/tmp/$$-$_netdev.conf"
}
kdump_setup_vlan() {
local _netdev=$1
local _phydev="$(awk '/^Device:/{print $2}'
/proc/net/vlan/"$_netdev")"
- local _netmac="$(kdump_get_mac_addr $_phydev)"
+ local _netmac="$(kdump_get_mac_addr "$_phydev")"
local _kdumpdev
#Just support vlan over bond and team
@@ -444,10 +445,10 @@ kdump_setup_vlan() {
if [[ $? != 0 ]]; then
exit 1
fi
- echo " vlan=$(kdump_setup_ifname $_netdev):$_phydev" >
${initdir}/etc/cmdline.d/43vlan.conf
+ echo " vlan=$(kdump_setup_ifname "$_netdev"):$_phydev" >
"${initdir}/etc/cmdline.d/43vlan.conf"
else
- _kdumpdev="$(kdump_setup_ifname $_phydev)"
- echo " vlan=$(kdump_setup_ifname $_netdev):$_kdumpdev
ifname=$_kdumpdev:$_netmac" > ${initdir}/etc/cmdline.d/43vlan.conf
+ _kdumpdev="$(kdump_setup_ifname "$_phydev")"
+ echo " vlan=$(kdump_setup_ifname "$_netdev"):$_kdumpdev
ifname=$_kdumpdev:$_netmac" > "${initdir}/etc/cmdline.d/43vlan.conf"
fi
}
@@ -464,7 +465,7 @@ find_online_znet_device() {
for d in $NETWORK_DEVICES
do
[[ ! -f "$d/online" ]] && continue
- read -r ONLINE < $d/online
+ read -r ONLINE < "$d/online"
if [[ $ONLINE -ne 1 ]]; then
continue
fi
@@ -472,10 +473,10 @@ find_online_znet_device() {
# device is online)
if [[ -f $d/if_name ]]
then
- read -r ifname < $d/if_name
+ read -r ifname < "$d/if_name"
elif [[ -d $d/net ]]
then
- ifname=$(ls $d/net/)
+ ifname=$(ls "$d/net/")
fi
[[ -n "$ifname" ]] && break
done
@@ -499,7 +500,7 @@ kdump_setup_znet() {
if [[ -z "$NETTYPE" || -z "$SUBCHANNELS" || -z
"$_options" ]]; then
dwarning "Failed to get znet configuration via nmlci output. Now try
sourcing ifcfg script."
- source_ifcfg_file $_netdev
+ source_ifcfg_file "$_netdev"
for i in $OPTIONS; do
_options=${_options},$i
done
@@ -509,17 +510,17 @@ kdump_setup_znet() {
exit 1
fi
- echo rd.znet=${NETTYPE},${SUBCHANNELS},${_options}
rd.znet_ifname=$_netdev:${SUBCHANNELS} > ${initdir}/etc/cmdline.d/30znet.conf
+ echo "rd.znet=${NETTYPE},${SUBCHANNELS},${_options}
rd.znet_ifname=$_netdev:${SUBCHANNELS}" >
"${initdir}/etc/cmdline.d/30znet.conf"
}
kdump_get_ip_route()
{
- local _route=$(/sbin/ip -o route get to $1 2>&1)
+ local _route=$(/sbin/ip -o route get to "$1" 2>&1)
if [[ $? != 0 ]]; then
derror "Bad kdump network destination: $1"
exit 1
fi
- echo $_route
+ echo "$_route"
}
kdump_get_ip_route_field()
@@ -529,15 +530,15 @@ kdump_get_ip_route_field()
kdump_get_remote_ip()
{
- local _remote=$(get_remote_host $1) _remote_temp
- if is_hostname $_remote; then
- _remote_temp=$(getent ahosts $_remote | grep -v : | head -n 1)
+ local _remote=$(get_remote_host "$1") _remote_temp
+ if is_hostname "$_remote"; then
+ _remote_temp=$(getent ahosts "$_remote" | grep -v : | head -n 1)
if [[ -z "$_remote_temp" ]]; then
- _remote_temp=$(getent ahosts $_remote | head -n 1)
+ _remote_temp=$(getent ahosts "$_remote" | head -n 1)
fi
- _remote=$(echo $_remote_temp | cut -d' ' -f1)
+ _remote=$(echo "$_remote_temp" | awk '{print $1}')
fi
- echo $_remote
+ echo "$_remote"
}
# Setup dracut to bring up network interface that enable
@@ -548,13 +549,13 @@ kdump_install_net() {
local _static _proto _ip_conf _ip_opts _ifname_opts
local _znet_netdev _nm_show_cmd_znet
- _destaddr=$(kdump_get_remote_ip $1)
- _route=$(kdump_get_ip_route $_destaddr)
+ _destaddr=$(kdump_get_remote_ip "$1")
+ _route=$(kdump_get_ip_route "$_destaddr")
_srcaddr=$(kdump_get_ip_route_field "$_route" "src")
_netdev=$(kdump_get_ip_route_field "$_route" "dev")
_nm_show_cmd=$(get_nmcli_connection_show_cmd_by_ifname "$_netdev")
- _netmac=$(kdump_get_mac_addr $_netdev)
- kdumpnic=$(kdump_setup_ifname $_netdev)
+ _netmac=$(kdump_get_mac_addr "$_netdev")
+ kdumpnic=$(kdump_setup_ifname "$_netdev")
_znet_netdev=$(find_online_znet_device)
if [[ -n "$_znet_netdev" ]]; then
@@ -566,10 +567,10 @@ kdump_install_net() {
fi
fi
- _static=$(kdump_static_ip $_netdev $_srcaddr $kdumpnic)
+ _static=$(kdump_static_ip "$_netdev" "$_srcaddr"
"$kdumpnic")
if [[ -n "$_static" ]]; then
_proto=none
- elif is_ipv6_address $_srcaddr; then
+ elif is_ipv6_address "$_srcaddr"; then
_proto=auto6
else
_proto=dhcp
@@ -582,9 +583,9 @@ kdump_install_net() {
# so we have to avoid adding duplicates
# We should also check /proc/cmdline for existing ip=xx arg.
# For example, iscsi boot will specify ip=xxx arg in cmdline.
- if [[ ! -f $_ip_conf ]] || ! grep -q $_ip_opts $_ip_conf &&\
+ if [[ ! -f $_ip_conf ]] || ! grep -q "$_ip_opts" "$_ip_conf"
&&\
! grep -q "ip=[^[:space:]]*$_netdev" /proc/cmdline; then
- echo "$_ip_opts" >> $_ip_conf
+ echo "$_ip_opts" >> "$_ip_conf"
fi
if kdump_is_bridge "$_netdev"; then
@@ -600,14 +601,14 @@ kdump_install_net() {
kdump_setup_vlan "$_netdev"
else
_ifname_opts=" ifname=$kdumpnic:$_netmac"
- echo "$_ifname_opts" >> $_ip_conf
+ echo "$_ifname_opts" >> "$_ip_conf"
fi
kdump_setup_dns "$_netdev" "$_nm_show_cmd"
if [[ ! -f ${initdir}/etc/cmdline.d/50neednet.conf ]]; then
# network-manager module needs this parameter
- echo "rd.neednet" >> ${initdir}/etc/cmdline.d/50neednet.conf
+ echo "rd.neednet" >>
"${initdir}/etc/cmdline.d/50neednet.conf"
fi
# Save netdev used for kdump as cmdline
@@ -619,8 +620,8 @@ kdump_install_net() {
# gateway.
if [[ ! -f ${initdir}/etc/cmdline.d/60kdumpnic.conf ]] &&
[[ ! -f ${initdir}/etc/cmdline.d/70bootdev.conf ]]; then
- echo "kdumpnic=$kdumpnic" >
${initdir}/etc/cmdline.d/60kdumpnic.conf
- echo "bootdev=$kdumpnic" > ${initdir}/etc/cmdline.d/70bootdev.conf
+ echo "kdumpnic=$kdumpnic" >
"${initdir}/etc/cmdline.d/60kdumpnic.conf"
+ echo "bootdev=$kdumpnic" >
"${initdir}/etc/cmdline.d/70bootdev.conf"
fi
}
@@ -629,7 +630,7 @@ kdump_install_pre_post_conf() {
if [[ -d /etc/kdump/pre.d ]]; then
for file in /etc/kdump/pre.d/*; do
if [[ -x "$file" ]]; then
- dracut_install $file
+ dracut_install "$file"
elif [[ $file != "/etc/kdump/pre.d/*" ]]; then
echo "$file is not executable"
fi
@@ -639,7 +640,7 @@ kdump_install_pre_post_conf() {
if [[ -d /etc/kdump/post.d ]]; then
for file in /etc/kdump/post.d/*; do
if [[ -x "$file" ]]; then
- dracut_install $file
+ dracut_install "$file"
elif [[ $file != "/etc/kdump/post.d/*" ]]; then
echo "$file is not executable"
fi
@@ -654,19 +655,19 @@ default_dump_target_install_conf()
is_user_configured_dump_target && return
- _save_path=$(get_bind_mount_source $(get_save_path))
- _target=$(get_target_from_path $_save_path)
- _mntpoint=$(get_mntpoint_from_target $_target)
+ _save_path=$(get_bind_mount_source "$(get_save_path)")
+ _target=$(get_target_from_path "$_save_path")
+ _mntpoint=$(get_mntpoint_from_target "$_target")
- _fstype=$(get_fs_type_from_target $_target)
- if is_fs_type_nfs $_fstype; then
+ _fstype=$(get_fs_type_from_target "$_target")
+ if is_fs_type_nfs "$_fstype"; then
kdump_install_net "$_target"
_fstype="nfs"
else
- _target=$(kdump_get_persistent_dev $_target)
+ _target=$(kdump_get_persistent_dev "$_target")
fi
- echo "$_fstype $_target" >> ${initdir}/tmp/$$-kdump.conf
+ echo "$_fstype $_target" >> "${initdir}/tmp/$$-kdump.conf"
# don't touch the path under root mount
if [[ "$_mntpoint" != "/" ]]; then
@@ -674,8 +675,8 @@ default_dump_target_install_conf()
fi
#erase the old path line, then insert the parsed path
- sed -i "/^path/d" ${initdir}/tmp/$$-kdump.conf
- echo "path $_save_path" >> ${initdir}/tmp/$$-kdump.conf
+ sed -i "/^path/d" "${initdir}/tmp/$$-kdump.conf"
+ echo "path $_save_path" >> "${initdir}/tmp/$$-kdump.conf"
}
#install kdump.conf and what user specifies in kdump.conf
@@ -689,12 +690,12 @@ kdump_install_conf() {
# remove inline comments after the end of a directive.
case "$_opt" in
raw)
- _pdev=$(persistent_policy="by-id" kdump_get_persistent_dev $_val)
- sed -i -e "s#^${_opt}[[:space:]]\+$_val#$_opt $_pdev#"
${initdir}/tmp/$$-kdump.conf
+ _pdev=$(persistent_policy="by-id" kdump_get_persistent_dev
"$_val")
+ sed -i -e "s#^${_opt}[[:space:]]\+$_val#$_opt $_pdev#"
"${initdir}/tmp/$$-kdump.conf"
;;
ext[234]|xfs|btrfs|minix)
- _pdev=$(kdump_get_persistent_dev $_val)
- sed -i -e "s#^${_opt}[[:space:]]\+$_val#$_opt $_pdev#"
${initdir}/tmp/$$-kdump.conf
+ _pdev=$(kdump_get_persistent_dev "$_val")
+ sed -i -e "s#^${_opt}[[:space:]]\+$_val#$_opt $_pdev#"
"${initdir}/tmp/$$-kdump.conf"
;;
ssh|nfs)
kdump_install_net "$_val"
@@ -705,7 +706,7 @@ kdump_install_conf() {
fi
;;
kdump_pre|kdump_post|extra_bins)
- dracut_install $_val
+ dracut_install "$_val"
;;
core_collector)
dracut_install "${_val%%[[:blank:]]*}"
@@ -719,7 +720,7 @@ kdump_install_conf() {
kdump_configure_fence_kdump "${initdir}/tmp/$$-kdump.conf"
inst "${initdir}/tmp/$$-kdump.conf" "/etc/kdump.conf"
- rm -f ${initdir}/tmp/$$-kdump.conf
+ rm -f "${initdir}/tmp/$$-kdump.conf"
}
# Default sysctl parameters should suffice for kdump kernel.
@@ -741,9 +742,9 @@ kdump_iscsi_get_rec_val() {
# The open-iscsi 742 release changed to using flat files in
# /var/lib/iscsi.
- result=$(/sbin/iscsiadm --show -m session -r ${1} | grep "^${2} = ")
+ result=$(/sbin/iscsiadm --show -m session -r "$1" | grep "^${2} =
")
result=${result##* = }
- echo $result
+ echo "$result"
}
kdump_get_iscsi_initiator() {
@@ -769,7 +770,7 @@ kdump_get_iscsi_initiator() {
# Figure out iBFT session according to session type
is_ibft() {
- [[ "$(kdump_iscsi_get_rec_val $1 "node.discovery_type")" = fw ]]
+ [[ "$(kdump_iscsi_get_rec_val "$1"
"node.discovery_type")" = fw ]]
}
kdump_setup_iscsi_device() {
@@ -785,32 +786,32 @@ kdump_setup_iscsi_device() {
# Check once before getting explicit values, so we can bail out early,
# e.g. in case of pure-hardware(all-offload) iscsi.
- if ! /sbin/iscsiadm -m session -r ${path} &>/dev/null ; then
+ if ! /sbin/iscsiadm -m session -r "$path" &>/dev/null ; then
return 1
fi
- if is_ibft ${path}; then
+ if is_ibft "$path"; then
return
fi
# Remove software iscsi cmdline generated by 95iscsi,
# and let kdump regenerate here.
- rm -f ${initdir}/etc/cmdline.d/95iscsi.conf
+ rm -f "${initdir}/etc/cmdline.d/95iscsi.conf"
- tgt_name=$(kdump_iscsi_get_rec_val ${path} "node.name")
- tgt_ipaddr=$(kdump_iscsi_get_rec_val ${path} "node.conn\[0\].address")
+ tgt_name=$(kdump_iscsi_get_rec_val "$path" "node.name")
+ tgt_ipaddr=$(kdump_iscsi_get_rec_val "$path"
"node.conn\[0\].address")
# get and set username and password details
- username=$(kdump_iscsi_get_rec_val ${path} "node.session.auth.username")
+ username=$(kdump_iscsi_get_rec_val "$path"
"node.session.auth.username")
[[ "$username" == "<empty>" ]] &&
username=""
- password=$(kdump_iscsi_get_rec_val ${path} "node.session.auth.password")
+ password=$(kdump_iscsi_get_rec_val "$path"
"node.session.auth.password")
[[ "$password" == "<empty>" ]] &&
password=""
- username_in=$(kdump_iscsi_get_rec_val ${path}
"node.session.auth.username_in")
+ username_in=$(kdump_iscsi_get_rec_val "$path"
"node.session.auth.username_in")
[[ -n "$username" ]] &&
userpwd_str="$username:$password"
# get and set incoming username and password details
[[ "$username_in" == "<empty>" ]] &&
username_in=""
- password_in=$(kdump_iscsi_get_rec_val ${path}
"node.session.auth.password_in")
+ password_in=$(kdump_iscsi_get_rec_val "$path"
"node.session.auth.password_in")
[[ "$password_in" == "<empty>" ]] &&
password_in=""
[[ -n "$username_in" ]] &&
userpwd_in_str=":$username_in:$password_in"
@@ -821,16 +822,16 @@ kdump_setup_iscsi_device() {
# FIXME: Do we need to parse and set other parameters like protocol, port
# iscsi_iface_name, netdev_name, LUN etc.
- if is_ipv6_address $tgt_ipaddr; then
+ if is_ipv6_address "$tgt_ipaddr"; then
tgt_ipaddr="[$tgt_ipaddr]"
fi
netroot_str="netroot=iscsi:${userpwd_str}${userpwd_in_str}@$tgt_ipaddr::::$tgt_name"
- [[ -f $netroot_conf ]] || touch $netroot_conf
+ [[ -f $netroot_conf ]] || touch "$netroot_conf"
# If netroot target does not exist already, append.
- if ! grep -q $netroot_str $netroot_conf; then
- echo $netroot_str >> $netroot_conf
+ if ! grep -q "$netroot_str" "$netroot_conf"; then
+ echo "$netroot_str" >> "$netroot_conf"
dinfo "Appended $netroot_str to $netroot_conf"
fi
@@ -839,9 +840,9 @@ kdump_setup_iscsi_device() {
[[ $? -ne "0" ]] && derror "Failed to get initiator name"
&& return 1
# If initiator details do not exist already, append.
- if ! grep -q "$initiator_str" $netroot_conf; then
- echo "$initiator_str" >> $netroot_conf
- dinfo "Appended "$initiator_str" to $netroot_conf"
+ if ! grep -q "$initiator_str" "$netroot_conf"; then
+ echo "$initiator_str" >> "$netroot_conf"
+ dinfo "Appended $initiator_str to $netroot_conf"
fi
}
@@ -876,13 +877,13 @@ get_alias() {
for ip in $ips
do
# in /etc/hosts, alias can come at the 2nd column
- entries=$(grep $ip /etc/hosts | awk '{ $1=""; print $0 }')
+ entries=$(grep "$ip" /etc/hosts | awk '{ $1=""; print
$0 }')
if [[ $? -eq 0 ]]; then
alias_set="$alias_set $entries"
fi
done
- echo $alias_set
+ echo "$alias_set"
}
is_localhost() {
@@ -913,23 +914,23 @@ get_pcs_fence_kdump_nodes() {
# we need to convert each to node1, node2 ... nodeX in each iteration
for node in ${nodelist}; do
# convert $node from 'uname="nodeX"' to 'nodeX'
- eval $node
- nodename=$uname
+ eval "$node"
+ nodename="$uname"
# Skip its own node name
- if is_localhost $nodename; then
+ if is_localhost "$nodename"; then
continue
fi
nodes="$nodes $nodename"
done
- echo $nodes
+ echo "$nodes"
}
# retrieves fence_kdump args from config file
get_pcs_fence_kdump_args() {
if [[ -f $FENCE_KDUMP_CONFIG_FILE ]]; then
- . $FENCE_KDUMP_CONFIG_FILE
- echo $FENCE_KDUMP_OPTS
+ . "$FENCE_KDUMP_CONFIG_FILE"
+ echo "$FENCE_KDUMP_OPTS"
fi
}
@@ -940,12 +941,12 @@ get_generic_fence_kdump_nodes() {
nodes=$(kdump_get_conf_val "fence_kdump_nodes")
for node in ${nodes}; do
# Skip its own node name
- if is_localhost $node; then
+ if is_localhost "$node"; then
continue
fi
filtered="$filtered $node"
done
- echo $filtered
+ echo "$filtered"
}
# setup fence_kdump in cluster
@@ -962,11 +963,11 @@ kdump_configure_fence_kdump () {
nodes=$(get_pcs_fence_kdump_nodes)
# set appropriate options in kdump.conf
- echo "fence_kdump_nodes $nodes" >> ${kdump_cfg_file}
+ echo "fence_kdump_nodes $nodes" >> "${kdump_cfg_file}"
args=$(get_pcs_fence_kdump_args)
if [[ -n "$args" ]]; then
- echo "fence_kdump_args $args" >> ${kdump_cfg_file}
+ echo "fence_kdump_args $args" >>
"${kdump_cfg_file}"
fi
else
@@ -976,12 +977,12 @@ kdump_configure_fence_kdump () {
# setup network for each node
for node in ${nodes}; do
- kdump_install_net $node
+ kdump_install_net "$node"
done
dracut_install /etc/hosts
dracut_install /etc/nsswitch.conf
- dracut_install $FENCE_KDUMP_SEND
+ dracut_install "$FENCE_KDUMP_SEND"
}
# Install a random seed used to feed /dev/urandom
@@ -991,32 +992,32 @@ kdump_install_random_seed() {
poolsize=$(</proc/sys/kernel/random/poolsize)
- if [[ ! -d ${initdir}/var/lib/ ]]; then
- mkdir -p ${initdir}/var/lib/
+ if [[ ! -d "${initdir}/var/lib/" ]]; then
+ mkdir -p "${initdir}/var/lib/"
fi
- dd if=/dev/urandom of=${initdir}/var/lib/random-seed \
- bs=$poolsize count=1 2> /dev/null
+ dd if=/dev/urandom of="${initdir}/var/lib/random-seed" \
+ bs="$poolsize" count=1 2> /dev/null
}
kdump_install_systemd_conf() {
# Kdump turns out to require longer default systemd mount timeout
# than 1st kernel(90s by default), we use default 300s for kdump.
- grep -r "^[[:space:]]*DefaultTimeoutStartSec="
${initdir}/etc/systemd/system.conf* &>/dev/null
+ grep -r "^[[:space:]]*DefaultTimeoutStartSec="
"${initdir}/etc/systemd/system.conf"* &>/dev/null
if [[ $? -ne 0 ]]; then
- mkdir -p ${initdir}/etc/systemd/system.conf.d
- echo "[Manager]" > ${initdir}/etc/systemd/system.conf.d/kdump.conf
- echo "DefaultTimeoutStartSec=300s" >>
${initdir}/etc/systemd/system.conf.d/kdump.conf
+ mkdir -p "${initdir}/etc/systemd/system.conf.d"
+ echo "[Manager]" >
"${initdir}/etc/systemd/system.conf.d/kdump.conf"
+ echo "DefaultTimeoutStartSec=300s" >>
"${initdir}/etc/systemd/system.conf.d/kdump.conf"
fi
# Forward logs to console directly, and don't read Kmsg, this avoids
# unneccessary memory consumption and make console output more useful.
# Only do so for non fadump image.
- mkdir -p ${initdir}/etc/systemd/journald.conf.d
- echo "[Journal]" > ${initdir}/etc/systemd/journald.conf.d/kdump.conf
- echo "Storage=volatile" >>
${initdir}/etc/systemd/journald.conf.d/kdump.conf
- echo "ReadKMsg=no" >>
${initdir}/etc/systemd/journald.conf.d/kdump.conf
- echo "ForwardToConsole=yes" >>
${initdir}/etc/systemd/journald.conf.d/kdump.conf
+ mkdir -p "${initdir}/etc/systemd/journald.conf.d"
+ echo "[Journal]" >
"${initdir}/etc/systemd/journald.conf.d/kdump.conf"
+ echo "Storage=volatile" >>
"${initdir}/etc/systemd/journald.conf.d/kdump.conf"
+ echo "ReadKMsg=no" >>
"${initdir}/etc/systemd/journald.conf.d/kdump.conf"
+ echo "ForwardToConsole=yes" >>
"${initdir}/etc/systemd/journald.conf.d/kdump.conf"
}
install() {
@@ -1029,7 +1030,7 @@ install() {
fi
dracut_install -o /etc/adjtime /etc/localtime
inst "$moddir/monitor_dd_progress"
"/kdumpscripts/monitor_dd_progress"
- chmod +x ${initdir}/kdumpscripts/monitor_dd_progress
+ chmod +x "${initdir}/kdumpscripts/monitor_dd_progress"
inst "/bin/dd" "/bin/dd"
inst "/bin/tail" "/bin/tail"
inst "/bin/date" "/bin/date"
@@ -1075,7 +1076,7 @@ install() {
# actually does nothing.
sed -i -e \
's/\(^[[:space:]]*reserved_memory[[:space:]]*=\)[[:space:]]*[[:digit:]]*/\1
1024/' \
- ${initdir}/etc/lvm/lvm.conf &>/dev/null
+ "${initdir}/etc/lvm/lvm.conf" &>/dev/null
# Save more memory by dropping switch root capability
dracut_no_switch_root
diff --git a/kdumpctl b/kdumpctl
index d29d37f2..f65f8e3d 100755
--- a/kdumpctl
+++ b/kdumpctl
@@ -78,11 +78,11 @@ save_core()
{
coredir="/var/crash/$(date +"%Y-%m-%d-%H:%M")"
- mkdir -p $coredir
+ mkdir -p "$coredir"
ddebug "cp --sparse=always /proc/vmcore $coredir/vmcore-incomplete"
- cp --sparse=always /proc/vmcore $coredir/vmcore-incomplete
+ cp --sparse=always /proc/vmcore "$coredir/vmcore-incomplete"
if [[ $? == 0 ]]; then
- mv $coredir/vmcore-incomplete $coredir/vmcore
+ mv "$coredir/vmcore-incomplete" "$coredir/vmcore"
dinfo "saved a vmcore to $coredir"
else
derror "failed to save a vmcore to $coredir"
@@ -93,9 +93,9 @@ save_core()
#
https://fedorahosted.org/abrt/
if [[ -x /usr/bin/dumpoops ]]; then
ddebug "makedumpfile --dump-dmesg $coredir/vmcore $coredir/dmesg"
- makedumpfile --dump-dmesg $coredir/vmcore $coredir/dmesg >/dev/null 2>&1
+ makedumpfile --dump-dmesg "$coredir/vmcore" "$coredir/dmesg"
>/dev/null 2>&1
ddebug "dumpoops -d $coredir/dmesg"
- dumpoops -d $coredir/dmesg >/dev/null 2>&1
+ dumpoops -d "$coredir/dmesg" >/dev/null 2>&1
if [[ $? == 0 ]]; then
dinfo "kernel oops has been collected by abrt tool"
fi
@@ -121,7 +121,7 @@ check_earlykdump_is_enabled()
rebuild_kdump_initrd()
{
ddebug "rebuild kdump initrd: $MKDUMPRD $TARGET_INITRD $KDUMP_KERNELVER"
- $MKDUMPRD $TARGET_INITRD $KDUMP_KERNELVER
+ $MKDUMPRD "$TARGET_INITRD" "$KDUMP_KERNELVER"
if [[ $? != 0 ]]; then
derror "mkdumprd: failed to make kdump initrd"
return 1
@@ -136,8 +136,8 @@ rebuild_kdump_initrd()
rebuild_initrd()
{
- if [[ ! -w $(dirname $TARGET_INITRD) ]];then
- derror "$(dirname $TARGET_INITRD) does not have write permission. Cannot rebuild
$TARGET_INITRD"
+ if [[ ! -w $(dirname "$TARGET_INITRD") ]];then
+ derror "$(dirname "$TARGET_INITRD") does not have write permission.
Cannot rebuild $TARGET_INITRD"
return 1
fi
@@ -183,11 +183,11 @@ backup_default_initrd()
if [[ ! -e $DEFAULT_INITRD_BAK ]]; then
dinfo "Backing up $DEFAULT_INITRD before rebuild."
# save checksum to verify before restoring
- sha1sum $DEFAULT_INITRD > $INITRD_CHECKSUM_LOCATION
- cp $DEFAULT_INITRD $DEFAULT_INITRD_BAK
+ sha1sum "$DEFAULT_INITRD" > "$INITRD_CHECKSUM_LOCATION"
+ cp "$DEFAULT_INITRD" "$DEFAULT_INITRD_BAK"
if [[ $? -ne 0 ]]; then
dwarn "WARNING: failed to backup $DEFAULT_INITRD."
- rm -f $DEFAULT_INITRD_BAK
+ rm -f "$DEFAULT_INITRD_BAK"
fi
fi
}
@@ -210,7 +210,7 @@ restore_default_initrd()
dwarn "WARNING: checksum mismatch! Can't restore original initrd.."
else
rm -f $INITRD_CHECKSUM_LOCATION
- mv $DEFAULT_INITRD_BAK $DEFAULT_INITRD
+ mv "$DEFAULT_INITRD_BAK" "$DEFAULT_INITRD"
if [[ $? -eq 0 ]]; then
derror "Restoring original initrd as fadump mode is disabled."
sync
@@ -226,7 +226,7 @@ check_config()
case "$config_opt" in
dracut_args)
if [[ $config_val == *--mount* ]]; then
- if [[ $(echo $config_val | grep -o "\-\-mount" | wc -l) -ne 1 ]]; then
+ if [[ $(echo "$config_val" | grep -o "\-\-mount" | wc -l) -ne 1
]]; then
derror "Multiple mount targets specified in one
\"dracut_args\"."
return 1
fi
@@ -297,13 +297,13 @@ get_pcs_cluster_modified_files()
fi
if [[ -f $FENCE_KDUMP_CONFIG_FILE ]]; then
- time_stamp=$(stat -c "%Y" $FENCE_KDUMP_CONFIG_FILE)
+ time_stamp=$(stat -c "%Y" "$FENCE_KDUMP_CONFIG_FILE")
if [[ "$time_stamp" -gt "$image_time" ]]; then
modified_files="$modified_files $FENCE_KDUMP_CONFIG_FILE"
fi
fi
- echo $modified_files
+ echo "$modified_files"
}
setup_initrd()
@@ -314,7 +314,7 @@ setup_initrd()
return 1
fi
- DEFAULT_INITRD_BAK="$KDUMP_BOOTDIR/.$(basename $DEFAULT_INITRD).default"
+ DEFAULT_INITRD_BAK="$KDUMP_BOOTDIR/.$(basename
"$DEFAULT_INITRD").default"
if [[ $DEFAULT_DUMP_MODE == "fadump" ]]; then
TARGET_INITRD="$DEFAULT_INITRD"
@@ -357,7 +357,7 @@ check_files_modified()
fi
HOOKS="$HOOKS $POST_FILES $PRE_FILES"
CORE_COLLECTOR=$(kdump_get_conf_val core_collector | cut -d ' ' -f 1)
- CORE_COLLECTOR=$(type -P $CORE_COLLECTOR)
+ CORE_COLLECTOR=$(type -P "$CORE_COLLECTOR")
# POST_FILES and PRE_FILES are already checked against executable, need not to check
again.
EXTRA_BINS="$EXTRA_BINS $CHECK_FILES"
CHECK_FILES=$(kdump_get_conf_val extra_bins)
@@ -375,8 +375,8 @@ check_files_modified()
_module_file="$(modinfo --set-version "$KDUMP_KERNELVER" --filename
"$_module" 2>/dev/null)"
if [[ $? -eq 0 ]]; then
files="$files $_module_file"
- for _dep_modules in $(modinfo -F depends $_module | tr ',' ' '); do
- files="$files $(modinfo --set-version "$KDUMP_KERNELVER"
--filename $_dep_modules 2>/dev/null)"
+ for _dep_modules in $(modinfo -F depends "$_module" | tr ',' '
'); do
+ files="$files $(modinfo --set-version "$KDUMP_KERNELVER"
--filename "$_dep_modules" 2>/dev/null)"
done
else
# If it's not a module nor builtin, give an error
@@ -394,13 +394,13 @@ check_files_modified()
for file in $files; do
if [[ -e "$file" ]]; then
- time_stamp=$(stat -c "%Y" $file)
+ time_stamp=$(stat -c "%Y" "$file")
if [[ "$time_stamp" -gt "$image_time" ]]; then
modified_files="$modified_files $file"
fi
if [[ -L "$file" ]]; then
- file=$(readlink -m $file)
- time_stamp=$(stat -c "%Y" $file)
+ file=$(readlink -m "$file")
+ time_stamp=$(stat -c "%Y" "$file")
if [[ "$time_stamp" -gt "$image_time" ]]; then
modified_files="$modified_files $file"
fi
@@ -453,8 +453,8 @@ check_drivers_modified()
ddebug "Modules included in old initramfs: '$_old_drivers'"
for _driver in $_new_drivers; do
# Skip deprecated/invalid driver name or built-in module
- _module_name=$(modinfo --set-version "$KDUMP_KERNELVER" -F name $_driver
2>/dev/null)
- _module_filename=$(modinfo --set-version "$KDUMP_KERNELVER" -n $_driver
2>/dev/null)
+ _module_name=$(modinfo --set-version "$KDUMP_KERNELVER" -F name
"$_driver" 2>/dev/null)
+ _module_filename=$(modinfo --set-version "$KDUMP_KERNELVER" -n
"$_driver" 2>/dev/null)
if [[ $? -ne 0 ]] || [[ -z "$_module_name" ]] || [[
"$_module_filename" = *"(builtin)"* ]]; then
continue
fi
@@ -483,21 +483,21 @@ check_fs_modified()
fi
_target=$(get_block_dump_target)
- _new_fstype=$(get_fs_type_from_target $_target)
+ _new_fstype=$(get_fs_type_from_target "$_target")
if [[ -z "$_target" ]] || [[ -z "$_new_fstype" ]];then
derror "Dump target is invalid"
return 2
fi
ddebug "_target=$_target _new_fstype=$_new_fstype"
- _new_dev=$(kdump_get_persistent_dev $_target)
+ _new_dev=$(kdump_get_persistent_dev "$_target")
if [[ -z "$_new_dev" ]]; then
perror "Get persistent device name failed"
return 2
fi
- _new_mntpoint="$(get_kdump_mntpoint_from_target $_target)"
- _dracut_args=$(lsinitrd $TARGET_INITRD -f usr/lib/dracut/build-parameter.txt)
+ _new_mntpoint="$(get_kdump_mntpoint_from_target "$_target")"
+ _dracut_args=$(lsinitrd "$TARGET_INITRD" -f
usr/lib/dracut/build-parameter.txt)
if [[ -z "$_dracut_args" ]];then
dwarn "Warning: No dracut arguments found in initrd"
return 0
@@ -505,13 +505,14 @@ check_fs_modified()
# if --mount argument present then match old and new target, mount
# point and file system. If any of them mismatches then rebuild
- echo $_dracut_args | grep "\-\-mount" &> /dev/null
+ echo "$_dracut_args" | grep "\-\-mount" &> /dev/null
if [[ $? -eq 0 ]];then
- set -- $(echo $_dracut_args | awk -F "--mount '" '{print $2}' |
cut -d' ' -f1,2,3)
+ # shellcheck disable=SC2046
+ set -- $(echo "$_dracut_args" | awk -F "--mount '" '{print
$2}' | cut -d' ' -f1,2,3)
_old_dev=$1
_old_mntpoint=$2
_old_fstype=$3
- [[ $_new_dev = $_old_dev && $_new_mntpoint = $_old_mntpoint &&
$_new_fstype = $_old_fstype ]] && return 0
+ [[ $_new_dev = "$_old_dev" && $_new_mntpoint =
"$_old_mntpoint" && $_new_fstype = "$_old_fstype" ]]
&& return 0
# otherwise rebuild if target device is not a root device
else
[[ "$_target" = "$(get_root_fs_device)" ]] && return 0
@@ -590,7 +591,7 @@ check_rebuild()
#check to see if dependent files has been modified
#since last build of the image file
if [[ -f $TARGET_INITRD ]]; then
- image_time=$(stat -c "%Y" $TARGET_INITRD 2>/dev/null)
+ image_time=$(stat -c "%Y" "$TARGET_INITRD" 2>/dev/null)
#in case of fadump mode, check whether the default/target
#initrd is already built with dump capture capability
@@ -649,7 +650,7 @@ function remove_kdump_kernel_key()
return
fi
- keyctl unlink $KDUMP_KEY_ID %:.ima
+ keyctl unlink "$KDUMP_KEY_ID" %:.ima
}
# Load the kdump kernel specified in /etc/sysconfig/kdump
@@ -682,9 +683,10 @@ load_kdump()
PS4='+ $(date "+%Y-%m-%d %H:%M:%S") ${BASH_SOURCE}@${LINENO}: '
set -x
+ # shellcheck disable=SC2086
$KEXEC $KEXEC_ARGS $standard_kexec_args \
--command-line="$KDUMP_COMMANDLINE" \
- --initrd=$TARGET_INITRD $KDUMP_KERNEL
+ --initrd="$TARGET_INITRD" "$KDUMP_KERNEL"
ret=$?
set +x
@@ -709,7 +711,7 @@ check_ssh_config()
# remove inline comments after the end of a directive.
if [[ -f "$config_val" ]]; then
# canonicalize the path
- SSH_KEY_LOCATION=$(/usr/bin/readlink -m $config_val)
+ SSH_KEY_LOCATION=$(/usr/bin/readlink -m "$config_val")
else
dwarn "WARNING: '$config_val' doesn't exist, using default value
'$SSH_KEY_LOCATION'"
fi
@@ -726,7 +728,7 @@ check_ssh_config()
done <<< "$(kdump_read_conf)"
#make sure they've configured kdump.conf for ssh dumps
- local SSH_TARGET=$(echo -n $DUMP_TARGET | sed -n '/.*@/p')
+ local SSH_TARGET=$(echo -n "$DUMP_TARGET" | sed -n '/.*@/p')
if [[ -z "$SSH_TARGET" ]]; then
return 1
fi
@@ -746,7 +748,7 @@ check_and_wait_network_ready()
local errmsg
while true; do
- errmsg=$(ssh -i $SSH_KEY_LOCATION -o BatchMode=yes $DUMP_TARGET mkdir -p $SAVE_PATH
2>&1)
+ errmsg=$(ssh -i "$SSH_KEY_LOCATION" -o BatchMode=yes "$DUMP_TARGET"
mkdir -p "$SAVE_PATH" 2>&1)
retval=$?
# ssh exits with the exit status of the remote command or with 255 if an error
occurred
@@ -759,7 +761,7 @@ check_and_wait_network_ready()
# if server removes the authorized_keys or, no /root/.ssh/kdump_id_rsa
ddebug "$errmsg"
- echo $errmsg | grep -q "Permission denied\|No such file or directory\|Host key
verification failed" &> /dev/null
+ echo "$errmsg" | grep -q "Permission denied\|No such file or
directory\|Host key verification failed" &> /dev/null
if [[ $? -eq 0 ]]; then
derror "Could not create $DUMP_TARGET:$SAVE_PATH, you probably need to run
\"kdumpctl propagate\""
return 1
@@ -808,16 +810,16 @@ propagate_ssh_key()
dinfo "Using existing keys..."
else
dinfo "Generating new ssh keys... "
- /usr/bin/ssh-keygen -t rsa -f $KEYFILE -N "" 2>&1 > /dev/null
+ /usr/bin/ssh-keygen -t rsa -f "$KEYFILE" -N "" 2>&1 >
/dev/null
dinfo "done."
fi
#now find the target ssh user and server to contact.
- SSH_USER=$(echo $DUMP_TARGET | cut -d\ -f2 | cut -d@ -f1)
- SSH_SERVER=$(echo $DUMP_TARGET | sed -e's/\(.*(a)\)\(.*$\)/\2/')
+ SSH_USER=$(echo "$DUMP_TARGET" | cut -d@ -f1)
+ SSH_SERVER=$(echo "$DUMP_TARGET" | sed -e's/\(.*(a)\)\(.*$\)/\2/')
#now send the found key to the found server
- ssh-copy-id -i $KEYFILE $SSH_USER@$SSH_SERVER
+ ssh-copy-id -i "$KEYFILE" "$SSH_USER@$SSH_SERVER"
RET=$?
if [[ $RET == 0 ]]; then
dinfo "$KEYFILE has been added to ~$SSH_USER/.ssh/authorized_keys on
$SSH_SERVER"
@@ -836,7 +838,7 @@ show_reserved_mem()
mem=$(</sys/kernel/kexec_crash_size)
mem_mb=$((mem / 1024 / 1024))
- dinfo "Reserved "$mem_mb"MB memory for crash kernel"
+ dinfo "Reserved ${mem_mb}MB memory for crash kernel"
}
check_current_fadump_status()
@@ -869,8 +871,8 @@ save_raw()
derror "raw partition $raw_target not found"
return 1
}
- check_fs=$(lsblk --nodeps -npo FSTYPE $raw_target)
- if [[ $(echo $check_fs | wc -w) -ne 0 ]]; then
+ check_fs=$(lsblk --nodeps -npo FSTYPE "$raw_target")
+ if [[ $(echo "$check_fs" | wc -w) -ne 0 ]]; then
dwarn "Warning: Detected '$check_fs' signature on $raw_target, data loss
is expected."
return 0
fi
@@ -886,11 +888,11 @@ save_raw()
derror "failed to create $coredir"
return 1
}
- if makedumpfile -R $coredir/vmcore <$raw_target >/dev/null 2>&1; then
+ if makedumpfile -R "$coredir/vmcore" < "$raw_target"
>/dev/null 2>&1; then
# dump found
dinfo "Dump saved to $coredir/vmcore"
# wipe makedumpfile header
- dd if=/dev/zero of=$raw_target bs=1b count=1 2>/dev/null
+ dd if=/dev/zero of="$raw_target" bs=1b count=1 2>/dev/null
else
rm -rf "$coredir"
fi
@@ -904,7 +906,7 @@ local_fs_dump_target()
_target=$(egrep "^ext[234]|^xfs|^btrfs|^minix" /etc/kdump.conf)
if [[ $? -eq 0 ]]; then
- echo $_target|awk '{print $2}'
+ echo "$_target" | awk '{print $2}'
fi
}
@@ -919,7 +921,7 @@ path_to_be_relabeled()
_target=$(local_fs_dump_target)
if [[ -n "$_target" ]]; then
- _mnt=$(get_mntpoint_from_target $_target)
+ _mnt=$(get_mntpoint_from_target "$_target")
if ! is_mounted "$_mnt"; then
return
fi
@@ -930,9 +932,9 @@ path_to_be_relabeled()
_path=$(get_save_path)
# if $_path is masked by other mount, we will not relabel it.
- _rmnt=$(df $_mnt/$_path 2>/dev/null | tail -1 | awk '{ print $NF }')
+ _rmnt=$(df "$_mnt/$_path" 2>/dev/null | tail -1 | awk '{ print $NF
}')
if [[ "$_rmnt" == "$_mnt" ]]; then
- echo $_mnt/$_path
+ echo "$_mnt/$_path"
fi
}
diff --git a/mkdumprd b/mkdumprd
index f91315fe..9800934e 100644
--- a/mkdumprd
+++ b/mkdumprd
@@ -60,9 +60,9 @@ add_dracut_sshkey() {
to_mount() {
local _target=$1 _fstype=$2 _options=$3 _sed_cmd _new_mntpoint _pdev
- _new_mntpoint=$(get_kdump_mntpoint_from_target $_target)
- _fstype="${_fstype:-$(get_fs_type_from_target $_target)}"
- _options="${_options:-$(get_mntopt_from_target $_target)}"
+ _new_mntpoint=$(get_kdump_mntpoint_from_target "$_target")
+ _fstype="${_fstype:-$(get_fs_type_from_target "$_target")}"
+ _options="${_options:-$(get_mntopt_from_target "$_target")}"
_options="${_options:-defaults}"
if [[ "$_fstype" == "nfs"* ]]; then
@@ -72,8 +72,8 @@ to_mount() {
_sed_cmd+='s/,clientaddr=[^,]*//;'
else
# for non-nfs _target converting to use udev persistent name
- _pdev="$(kdump_get_persistent_dev $_target)"
- if [[ -z "$_pdev" ]]; then
+ _pdev="$(kdump_get_persistent_dev "$_target")"
+ if [[ -z $_pdev ]]; then
return 1
fi
fi
@@ -114,19 +114,19 @@ mkdir_save_path_ssh()
{
local _opt _dir
_opt=(-i "$SSH_KEY_LOCATION" -o BatchMode=yes -o
StrictHostKeyChecking=yes)
- ssh -qn "${_opt[@]}" $1 mkdir -p $SAVE_PATH 2>&1 > /dev/null
+ ssh -qn "${_opt[@]}" "$1" mkdir -p "$SAVE_PATH"
2>&1 > /dev/null
_ret=$?
if [[ $_ret -ne 0 ]]; then
perror_exit "mkdir failed on $1:$SAVE_PATH"
fi
#check whether user has write permission on $1:$SAVE_PATH
- _dir=$(ssh -qn "${_opt[@]}" $1 mktemp -dqp $SAVE_PATH 2>/dev/null)
+ _dir=$(ssh -qn "${_opt[@]}" "$1" mktemp -dqp
"$SAVE_PATH" 2>/dev/null)
_ret=$?
if [[ $_ret -ne 0 ]]; then
perror_exit "Could not create temporary directory on $1:$SAVE_PATH. Make
sure user has write permission on destination"
fi
- ssh -qn "${_opt[@]}" $1 rmdir $_dir
+ ssh -qn "${_opt[@]}" "$1" rmdir "$_dir"
return 0
}
@@ -168,7 +168,7 @@ check_size() {
perror_exit "Check dump target size failed"
fi
- if [[ $avail -lt $memtotal ]]; then
+ if [[ "$avail" -lt "$memtotal" ]]; then
dwarn "Warning: There might not be enough space to save a vmcore."
dwarn " The size of $2 should be greater than $memtotal kilo
bytes."
fi
@@ -206,9 +206,9 @@ mount_failure()
check_user_configured_target()
{
local _target=$1 _cfg_fs_type=$2 _mounted
- local _mnt=$(get_mntpoint_from_target $_target)
- local _opt=$(get_mntopt_from_target $_target)
- local _fstype=$(get_fs_type_from_target $_target)
+ local _mnt=$(get_mntpoint_from_target "$_target")
+ local _opt=$(get_mntopt_from_target "$_target")
+ local _fstype=$(get_fs_type_from_target "$_target")
if [[ -n "$_fstype" ]]; then
# In case of nfs4, nfs should be used instead, nfs* options is deprecated in
kdump.conf
@@ -227,7 +227,7 @@ check_user_configured_target()
if [[ -n "$_mnt" ]]; then
if ! is_mounted "$_mnt"; then
if [[ $_opt = *",noauto"* ]]; then
- mount $_mnt
+ mount "$_mnt"
[[ $? -ne 0 ]] && mount_failure "$_target"
"$_mnt" "$_fstype"
_mounted=$_mnt
else
@@ -236,8 +236,8 @@ check_user_configured_target()
fi
else
_mnt=$MKDUMPRD_TMPMNT
- mkdir -p $_mnt
- mount $_target $_mnt -t $_fstype -o defaults
+ mkdir -p "$_mnt"
+ mount "$_target" "$_mnt" -t "$_fstype" -o defaults
[[ $? -ne 0 ]] && mount_failure "$_target" ""
"$_fstype"
_mounted=$_mnt
fi
@@ -251,7 +251,7 @@ check_user_configured_target()
# Unmount it early, if function is interrupted and didn't reach here, the shell
trap will clear it up anyway
if [[ -n "$_mounted" ]]; then
- umount -f -- $_mounted
+ umount -f -- "$_mounted"
fi
}
@@ -276,13 +276,14 @@ verify_core_collector() {
_params="$_params vmcore dumpfile"
fi
+ # shellcheck disable=SC2086
if ! $_cmd --check-params $_params; then
perror_exit "makedumpfile parameter check failed."
fi
}
add_mount() {
- local _mnt=$(to_mount $@)
+ local _mnt=$(to_mount "$@")
if [[ $? -ne 0 ]]; then
exit 1
@@ -299,15 +300,15 @@ handle_default_dump_target()
is_user_configured_dump_target && return
- check_save_path_fs $SAVE_PATH
+ check_save_path_fs "$SAVE_PATH"
- _save_path=$(get_bind_mount_source $SAVE_PATH)
- _target=$(get_target_from_path $_save_path)
- _mntpoint=$(get_mntpoint_from_target $_target)
+ _save_path=$(get_bind_mount_source "$SAVE_PATH")
+ _target=$(get_target_from_path "$_save_path")
+ _mntpoint=$(get_mntpoint_from_target "$_target")
SAVE_PATH=${_save_path##"$_mntpoint"}
add_mount "$_target"
- check_size fs $_target
+ check_size fs "$_target"
}
# $1: function name
@@ -317,8 +318,8 @@ for_each_block_target()
for dev in $(get_kdump_targets); do
[[ -b "$dev" ]] || continue
- majmin=$(get_maj_min $dev)
- check_block_and_slaves $1 $majmin && return 1
+ majmin=$(get_maj_min "$dev")
+ check_block_and_slaves "$1" "$majmin" && return 1
done
return 0
@@ -328,14 +329,14 @@ for_each_block_target()
#return false if unresettable.
is_unresettable()
{
- local path="/sys/$(udevadm info --query=all --path=/sys/dev/block/$1 | awk
'/^P:/ {print $2}' | sed -e 's/\(cciss[0-9]\+\/\).*/\1/g' -e
's/\/block\/.*$//')/resettable"
+ local path="/sys/$(udevadm info --query=all --path="/sys/dev/block/$1"
| awk '/^P:/ {print $2}' | sed -e 's/\(cciss[0-9]\+\/\).*/\1/g' -e
's/\/block\/.*$//')/resettable"
local resettable=1
if [[ -f "$path" ]]
then
resettable="$(<"$path")"
[[ $resettable -eq 0 ]] && [[ "$OVERRIDE_RESETTABLE" -eq 0 ]]
&& {
- local device=$(udevadm info --query=all --path=/sys/dev/block/$1 | awk -F=
'/DEVNAME/{print $2}')
+ local device=$(udevadm info --query=all --path="/sys/dev/block/$1"
| awk -F= '/DEVNAME/{print $2}')
derror "Error: Can not save vmcore because device $device is
unresettable"
return 0
}
@@ -384,7 +385,7 @@ fi
keyfile=$(kdump_get_conf_val sshkey)
if [[ -f "$keyfile" ]]; then
# canonicalize the path
- SSH_KEY_LOCATION=$(/usr/bin/readlink -m $keyfile)
+ SSH_KEY_LOCATION=$(/usr/bin/readlink -m "$keyfile")
fi
while read -r config_opt config_val;
@@ -400,21 +401,21 @@ do
;;
raw)
# checking raw disk writable
- dd if=$config_val count=1 of=/dev/null > /dev/null 2>&1 || {
+ dd if="$config_val" count=1 of=/dev/null > /dev/null 2>&1 ||
{
perror_exit "Bad raw disk $config_val"
}
- _praw=$(persistent_policy="by-id" kdump_get_persistent_dev
$config_val)
- if [[ -z "$_praw" ]]; then
+ _praw=$(persistent_policy="by-id" kdump_get_persistent_dev
"$config_val")
+ if [[ -z $_praw ]]; then
exit 1
fi
add_dracut_arg "--device" "$_praw"
- check_size raw $config_val
+ check_size raw "$config_val"
;;
ssh)
if strstr "$config_val" "@";
then
- mkdir_save_path_ssh $config_val
- check_size ssh $config_val
+ mkdir_save_path_ssh "$config_val"
+ check_size ssh "$config_val"
add_dracut_sshkey "$SSH_KEY_LOCATION"
else
perror_exit "Bad ssh dump target $config_val"
@@ -448,7 +449,7 @@ fi
if ! is_fadump_capable; then
# The 2nd rootfs mount stays behind the normal dump target mount,
# so it doesn't affect the logic of check_dump_fs_modified().
- is_dump_to_rootfs && add_mount "$(to_dev_name
$(get_root_fs_device))"
+ is_dump_to_rootfs && add_mount "$(to_dev_name
"$(get_root_fs_device)")"
add_dracut_arg "--no-hostonly-default-device"
fi
--
2.31.1