Change Host

Im Rahmen des inside-network Projektes der lug-gg habe ich 2006 dieses Utility geschrieben.
Wenn ein Container für eine virtuelle Machine copiert wird sollten danach der Hostname
und verschiedene Dateien angepasst werden.
Ein Script kann helfen, keine Datei zu vergessen.
Evtl müssen Sie heute noch etwas anpassen.
Download script : change_host.tar.gz

#!/bin/bash
#
# ----------------------------------------------------------------------
# Autor : Detlef Hahn
# ----------------------------------------------------------------------
# Version Datum        Name          Änderung
# 1.0     08.08.2006   Detlef Hahn   Erste Version
# ----------------------------------------------------------------------

# Escapesequenzen 
bold=$(tput bold)
norm=$(tput sgr0)
red="\033[31;40m"
green="\033[32;40m"

tmp="/tmp/$1"

# ----------------------------------------------------------------------
#  Funktionen
# ----------------------------------------------------------------------

function show() {
   echo -e "  ${bold}  $1  ${norm}"
    
}

function ok() {
   if [ $1  -eq 0 ] ; then
      echo -e "   ${bold} ${green}[ DONE  ]${norm}"
   else 
      echo -e "   ${bold} ${red}[ ERROR  ]${norm}"
   fi
   echo " "
}

# --------------------------------------------------------------------

if [ "$#"  -lt 2  ] ; then
   show "usage:  $0 stations-id-alt stations-id-neu"
   echo "Beispiel : $0  lugXX-rtg   lugdh2-rtg"
   echo "oder"
   echo "Beispiel : $0  lugXX  lugdh2"
   echo ""
   cat <<  EOF
      Folgende Dateien werden modifiziert:
      -  /etc/hostname
      -  /etc/hosts
      -  /etc/network/interfaces
      -  /etc/resolv.conf
      -  /boot/grub/menu.lst
      -  /root/neuer_kernel
      
      Die Originaldateien werden unter /tmp/lug*  abgelegt.
      Sie sind dort bis zum nächsten boot vorhanden
      

      Folgende Dateinamen werden angepasst:
      -  /boot/vmlinuz*
      -  /boot/Systemmap*
      -  /boot/config*
      

EOF
   exit
fi
mkdir $tmp

show "Änderung von   /etc/hostname"
cp  /etc/hostname      ${tmp}/hostname
sed -e "/$1/s/$1/$2/"  ${tmp}/hostname  > /etc/hostname
grep "$2" /etc/hostname
ok "$?"

show "Änderung von /etc/hosts"
cp  /etc/hosts         ${tmp}/hosts
sed -e "/$1/s/$1/$2/"  ${tmp}/hosts  > /etc/hosts
grep "$2"  /etc/hosts
ok "$?"

show "Änderung von /etc/network/interfaces"
grep "address" /etc/network/interfaces
show "Austausch Netzanteil innerhalb der IP "
echo -n "alter String : "
read alt
echo -n "neue Netzadresse : "
read neu
if [ $? -eq 0  -a ${#alt} -gt 0 -a ${#neu} -gt 0 ] ; then
   cp   /etc/network/interfaces  ${tmp}/interfaces 
   sed  -e "/$alt/s/$alt/$neu/"  ${tmp}/interfaces >  /etc/network/interfaces
else
   echo  " "
   show "keine Änderung in /etc/network/interfaces  durchgeführt"
fi

grep "$neu" /etc/network/interfaces
ok "$?"

show "Änderung von /etc/resolv.conf"
cp /etc/resolv.conf  ${tmp}/resolv.conf
sralt=${2%%-*}
nsalt=`egrep "^[^#] *network" /etc/network/interfaces | sed -e "s/network//" -e "s/ //g" -e "s/\.0$//"`".253" 
echo "Bitte eingeben "
echo -n "search  [ ${sralt} ] :"
read srneu
echo -n "nameserver [ ${nsalt} ] : "
read nsneu
if [ ${#srneu} -gt  0 ] ; then
    echo "search ${srneu}  " > /etc/resolv.conf
else
    echo "search ${sralt}  " > /etc/resolv.conf
fi
if [ ${#nsneu} -gt  0 ] ; then
    echo "nameserver ${nsneu}  " > /etc/resolv.conf
else
    echo "nameserver ${nsalt}  " >> /etc/resolv.conf
fi
show "Neue /etc/resolv.conf"
cat /etc/resolv.conf
ok "$?"

show "Änderung von /boot/grub/menu.lst"
cp   /boot/grub/menu.lst  ${tmp}/menu.lst
sed  -e "/$1/s/$1/$2/"    ${tmp}/menu.lst > /boot/grub/menu.lst
grep "$2"  /boot/grub/menu.lst
ok "$?"

show "Änderung Dateinamen in /boot"
files=`ls /boot | grep $1`
for f in $files
do
   nf=`echo $f | sed -e "/$1/s/$1/$2/"`
   echo  "mv /boot/$f  /boot/$nf"  
   mv /boot/$f  /boot/$nf  

done
ls -l /boot
ok "$?"

show "Änderung script /root/neuer_kernel"
cp   /root/neuer_kernel ${tmp}/neuer_kernel
sed  -e "/$1/s/$1/$2/"  ${tmp}/neuer_kernel > /root/neuer_kernel
grep "$2"  /root/neuer_kernel
ok "$?"

show "Originale der geänderten Dateien liegen bis zum nächsten boot in"
show "    $tmp"
echo
show "Wenn dieser Rechner das Gateway ist, damm muß noch das Firewall-script"
show "in       /etc/network/start_mask.sh        angepasst werden"
echo


   Copyright © 2003 - 2024 by Detlef Hahn  http://www.detlefhahn.de       Stand  29.01.2007