diff --git a/kdump-lib.sh b/kdump-lib.sh index 9f95b2b..228d5b9 100755 --- a/kdump-lib.sh +++ b/kdump-lib.sh @@ -158,12 +158,15 @@ get_kdump_targets() # part is the bind mounted directory which quotes by bracket "[]". get_bind_mount_source() { - local _mnt=$(df "$1" | tail -1 | awk '{print $NF}') - local _path=${1#$_mnt} + local _mnt _path _src _opt _fstype + local _fsroot _src_nofsroot - local _src=$(get_mount_info SOURCE target "$_mnt" -f) - local _opt=$(get_mount_info OPTIONS target "$_mnt" -f) - local _fstype=$(get_mount_info FSTYPE target "$_mnt" -f) + _mnt=$(df "$1" | tail -1 | awk '{print $NF}') + _path=${1#$_mnt} + + _src=$(get_mount_info SOURCE target "$_mnt" -f) + _opt=$(get_mount_info OPTIONS target "$_mnt" -f) + _fstype=$(get_mount_info FSTYPE target "$_mnt" -f) # bind mount in fstab if [[ -d "$_src" ]] && [[ "$_fstype" = none ]] && (echo "$_opt" | grep -q "\bbind\b"); then @@ -171,12 +174,12 @@ get_bind_mount_source() fi # direct mount - local _src_nofsroot=$(get_mount_info SOURCE target "$_mnt" -v -f) + _src_nofsroot=$(get_mount_info SOURCE target "$_mnt" -v -f) if [[ $_src_nofsroot = "$_src" ]]; then echo "$_mnt$_path" && return fi - local _fsroot=${_src#${_src_nofsroot}[} + _fsroot=${_src#${_src_nofsroot}[} _fsroot=${_fsroot%]} _mnt=$(get_mount_info TARGET source "$_src_nofsroot" -f) @@ -199,8 +202,9 @@ get_mntopt_from_target() # $1: kdump target device get_kdump_mntpoint_from_target() { - local _mntpoint=$(get_mntpoint_from_target "$1") + local _mntpoint + _mntpoint=$(get_mntpoint_from_target "$1") # mount under /sysroot if dump to root disk or mount under # mount under /kdumproot if dump target is not mounted in first kernel # mount under /kdumproot/$_mntpoint in other cases in 2nd kernel. @@ -254,8 +258,9 @@ get_remote_host() is_hostname() { - local _hostname=$(echo "$1" | grep ":") + local _hostname + _hostname=$(echo "$1" | grep ":") if [[ -n "$_hostname" ]]; then return 1 fi @@ -369,7 +374,7 @@ get_ifcfg_nmcli() # $1: netdev name get_ifcfg_legacy() { - local ifcfg_file + local ifcfg_file hwaddr ifcfg_file="/etc/sysconfig/network-scripts/ifcfg-${1}" [[ -f "${ifcfg_file}" ]] && echo -n "${ifcfg_file}" && return @@ -377,7 +382,7 @@ get_ifcfg_legacy() ifcfg_file=$(get_ifcfg_by_name "${1}") [[ -f "${ifcfg_file}" ]] && echo -n "${ifcfg_file}" && return - local hwaddr=$(get_hwaddr "${1}") + hwaddr=$(get_hwaddr "${1}") if [[ -n "$hwaddr" ]]; then ifcfg_file=$(get_ifcfg_by_hwaddr "${hwaddr}") [[ -f "${ifcfg_file}" ]] && echo -n "${ifcfg_file}" && return @@ -616,7 +621,7 @@ prepare_kexec_args() # prepare_kdump_bootinfo() { - local boot_imglist boot_dirlist boot_initrdlist + local boot_img boot_imglist boot_dirlist boot_initrdlist local machine_id if [[ -z "$KDUMP_KERNELVER" ]]; then @@ -628,7 +633,7 @@ prepare_kdump_bootinfo() boot_imglist="$KDUMP_IMG-$KDUMP_KERNELVER$KDUMP_IMG_EXT $machine_id/$KDUMP_KERNELVER/$KDUMP_IMG" # Use BOOT_IMAGE as reference if possible, strip the GRUB root device prefix in (hd0,gpt1) format - local boot_img="$(sed "s/^BOOT_IMAGE=\((\S*)\)\?\(\S*\) .*/\2/" /proc/cmdline)" + boot_img="$(sed "s/^BOOT_IMAGE=\((\S*)\)\?\(\S*\) .*/\2/" /proc/cmdline)" if [[ -n "$boot_img" ]]; then boot_imglist="$boot_img $boot_imglist" fi @@ -850,9 +855,11 @@ kdump_get_arch_recommend_size() # $1: the block device to be checked in maj:min format get_luks_crypt_dev() { + local _type + [[ -b /dev/block/$1 ]] || return 1 - local _type=$(eval "$(blkid -u filesystem,crypto -o export -- "/dev/block/$1"); echo \$TYPE") + _type=$(eval "$(blkid -u filesystem,crypto -o export -- "/dev/block/$1"); echo \$TYPE") [[ $_type == "crypto_LUKS" ]] && echo "$1" for _x in "/sys/dev/block/$1/slaves/"*; do @@ -927,7 +934,9 @@ try_decompress() get_kernel_size() { # Prepare temp files: - local img=$1 tmp=$(mktemp /tmp/vmlinux-XXX) + local tmp img=$1 + + tmp=$(mktemp /tmp/vmlinux-XXX) trap 'rm -f "$tmp"' 0 # Try to check if it's a vmlinux already