X-Git-Url: https://iankelling.org/git/?a=blobdiff_plain;ds=sidebyside;f=myfai-chboot-local;h=4cef9a59638e22c06d718acd9dbf39fb4d39c68f;hb=8bb06901ce000f76dafc73288e1fe47c3032e4af;hp=8ab5a92117a568ec3bf259e333fc0c4b121952c8;hpb=14f283f82afc48d6cec1bb7498ec34ac2b0da77c;p=automated-distro-installer diff --git a/myfai-chboot-local b/myfai-chboot-local index 8ab5a92..4cef9a5 100755 --- a/myfai-chboot-local +++ b/myfai-chboot-local @@ -1,4 +1,21 @@ #!/bin/bash +# This file is part of Ian Kelling's automated-distro-installer +# Copyright (C) 2024 Ian Kelling + +# This program is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation; either version 2 +# of the License, or (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + # note, this script gets piped to bash, so cant cd to current dir [[ $EUID == 0 ]] || exec sudo "${BASH_SOURCE}" "$@" @@ -34,6 +51,10 @@ while [[ $1 == -* ]]; do bond=true shift ;; + --no-r) + fai_reboot_arg= + shift + ;; esac done @@ -44,18 +65,35 @@ err() { echo "[$(date +'%Y-%m-%d %H:%M:%S%z')]: $pre: $*" >&2; } host=$1 + rm -f /srv/tftp/fai/pxelinux.cfg/* if [[ ! $1 ]]; then echo "$0: clearing pxe config and exiting" exit 0 fi -# assuming ipv4, or else we might need to deal with multiple addresses -# in an ipv4 + ipv6 network. -my_ip=$(ip -4 route get 8.8.8.8 | sed -nr 's,^.*src\s+(\S+).*,\1,p') -if [[ ! $my_ip || $my_ip =~ [[:space:]] ]]; then - echo "$0: error: failed to get \$my_ip, got: $my_ip" - exit 1 +# somewhat duplicated in brc hostip() +case $host in + default) : ;; + [0-9:]) + hostip=$host + ;; + *) + hostip=$(getent ahostsv4 "$host" | awk '{ print $1 }' | head -n1) + ;; +esac + +if [[ $hostip ]]; then + + # assuming ipv4, or else we might need to deal with multiple addresses + # in an ipv4 + ipv6 network. + my_ip=$(ip -4 route get $hostip | sed -nr 's,^.*src\s+(\S+).*,\1,p') + if [[ ! $my_ip || $my_ip =~ [[:space:]] ]]; then + echo "$0: error: failed to get \$my_ip, got: $my_ip" + exit 1 + fi +else + my_ip=$(ip r show default | sed -r 's/.*via ([^ ]*).*/\1/' | head -n1) fi if [[ $host == default ]]; then