X-Git-Url: http://git.grml.org/?a=blobdiff_plain;f=components%2F9990-networking.sh;h=92c66ee4849b1f1c87d66de841fda2f0e6210fe3;hb=HEAD;hp=dbdc9133431954f9059af52e38bc0b6838fa19bc;hpb=a6e250845a22f7b54e2936a64e98430ed3c79194;p=live-boot-grml.git diff --git a/components/9990-networking.sh b/components/9990-networking.sh index dbdc913..92c66ee 100755 --- a/components/9990-networking.sh +++ b/components/9990-networking.sh @@ -84,30 +84,20 @@ do_netsetup () fi # split args of ethdevice=eth0,eth1 into "eth0 eth1" - for device in $(echo $ETHDEVICE | sed 's/,/ /g') + for device in $(echo "$ETHDEVICE" | sed 's/,/ /g') do devlist="$devlist $device" done - # this is tricky (and ugly) because ipconfig sometimes just hangs/runs into - # an endless loop; if execution fails give it two further tries, that's - # why we use '$devlist $devlist $devlist' for the other for loop - for dev in $devlist $devlist $devlist + for dev in $devlist do echo "Executing ipconfig -t $ETHDEV_TIMEOUT $dev" - ipconfig -t "$ETHDEV_TIMEOUT" $dev | tee -a /netboot.config & - jobid=$! - sleep "$ETHDEV_TIMEOUT" ; sleep 1 - if [ -r /proc/"$jobid"/status ] - then - echo "Killing job $jobid for device $dev as ipconfig ran into recursion..." - kill -9 $jobid - fi + ipconfig -t "$ETHDEV_TIMEOUT" "$dev" | tee -a /netboot.config # if configuration of device worked we should have an assigned # IP address, if so let's use the device as $DEVICE for later usage. # simple and primitive approach which seems to work fine - if ifconfig $dev | grep -q 'inet.*addr:' + if ifconfig "$dev" | grep -q -E 'inet.*addr:|inet [0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*.[0-9][0-9]*' then export DEVICE="$dev" break @@ -115,9 +105,9 @@ do_netsetup () done else for interface in ${DEVICE}; do - ipconfig -t "$ETHDEV_TIMEOUT" ${interface} | tee /netboot-${interface}.config + ipconfig -t "$ETHDEV_TIMEOUT" "${interface}" | tee "/netboot-${interface}.config" - [ -e /run/net-${interface}.conf ] && . /run/net-${interface}.conf + [ -e "/run/net-${interface}.conf" ] && . "/run/net-${interface}.conf" if [ "$IPV4ADDR" != "0.0.0.0" ] then @@ -131,14 +121,38 @@ do_netsetup () # source relevant ipconfig output OLDHOSTNAME=${HOSTNAME} - [ -e /run/net-${interface}.conf ] && . /run/net-${interface}.conf + [ -e "/run/net-${interface}.conf" ] && . "/run/net-${interface}.conf" - [ -z ${HOSTNAME} ] && HOSTNAME=${OLDHOSTNAME} + [ -z "${HOSTNAME}" ] && HOSTNAME="${OLDHOSTNAME}" export HOSTNAME if [ -n "${interface}" ] then - HWADDR="$(cat /sys/class/net/${interface}/address)" + # HWADDR used by do_iscsi from 9990-mount-iscsi.sh + # shellcheck disable=SC2034 + HWADDR="$(cat "/sys/class/net/${interface}/address")" + fi + + if [ ! -e "/etc/hostname" ] && [ -n "${HOSTNAME}" ] + then + echo "Creating /etc/hostname" + echo "${HOSTNAME}" > /etc/hostname + fi + + # Only create /etc/hosts if FQDN is known (to let 'hostname -f' query + # this file). Otherwise DNS will be queried to determine the FQDN. + if [ ! -e "/etc/hosts" ] && [ -n "${DNSDOMAIN}" ] + then + echo "Creating /etc/hosts" + cat > /etc/hosts < /etc/resolv.conf - echo "search ${DNSDOMAIN}" >> /etc/resolv.conf fi - for i in ${IPV4DNS0} ${IPV4DNS1} ${IPV4DNS1} + for i in ${IPV4DNS0} ${IPV4DNS1} ${IPV4DNS1} ${DNSSERVERS} do if [ -n "$i" ] && [ "$i" != 0.0.0.0 ] then echo "nameserver $i" >> /etc/resolv.conf fi done + + if [ -n "${DOMAINSEARCH}" ] + then + echo "search ${DOMAINSEARCH}" >> /etc/resolv.conf + elif [ -n "${DNSDOMAIN}" ] + then + echo "search ${DNSDOMAIN}" >> /etc/resolv.conf + fi fi # Check if we have a network device at all