From 8e263e0425f1a2673188058492d5a136bc6fb625 Mon Sep 17 00:00:00 2001 From: Stanislaw Bogatkin Date: Wed, 20 Jan 2016 17:28:22 +0300 Subject: [PATCH] Change filename parsing to ip output As filename parsing is a fragile way, change it to use 'ip' utility output for when finding interfaces with ip addresses equal to admin interface ip address. Change-Id: I4ad586b8964c600ad80f055707bca49b50506d1b Closes-Bug: #1524686 --- iso/bootstrap_admin_node.sh | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/iso/bootstrap_admin_node.sh b/iso/bootstrap_admin_node.sh index 041d5d37e..9fb7dff5f 100755 --- a/iso/bootstrap_admin_node.sh +++ b/iso/bootstrap_admin_node.sh @@ -115,30 +115,38 @@ function get_ifcfg_value { echo ${value} } +# Get IP address from interface name +function get_interface_ip { + local interface=$1 + echo $(ip -4 -o a s ${interface} | sed 's:/:\ :;s:\s\+:\ :g' | cut -d ' ' -f 4) +} + # Workaround to fix dracut network configuration approach: # Bring down all network interfaces which have the same IP # address statically configured as 'primary' interface function ifdown_ethernet_interfaces { local adminif_ipaddr - local if_config local if_name local if_ipaddr + local path - adminif_ipaddr=$(get_ifcfg_value IPADDR /etc/sysconfig/network-scripts/ifcfg-${ADMIN_INTERFACE}) + adminif_ipaddr=$(get_interface_ip $ADMIN_INTERFACE) if [[ -z "${adminif_ipaddr}" ]]; then return fi - for if_config in $(find /etc/sysconfig/network-scripts -name 'ifcfg-*' ! -name 'ifcfg-lo'); do - if_name=$(get_ifcfg_value NAME $if_config) + for if_name in $(get_ethernet_interfaces); do if [[ "${if_name}" == "${ADMIN_INTERFACE}" ]]; then continue fi - if_ipaddr=$(get_ifcfg_value IPADDR $if_config) + if_ipaddr=$(get_interface_ip $if_name) if [[ "${if_ipaddr}" == "${adminif_ipaddr}" ]]; then echo "Interface '${if_name}' uses the same ip '${if_ipaddr}' as admin interface '${ADMIN_INTERFACE}', removing ..." ifdown ${if_name} mkdir -p "${bup_folder}" - mv -f "${if_config}" "${bup_folder}" + path="/etc/sysconfig/network-scripts/ifcfg-${if_name}" + if [[ -f ${path} ]]; then + mv -f "${path}" "${bup_folder}" + fi fi done }