#!/bin/rc
# rename old-hostname new-hostname
path=(/etc /usr/local/etc $path)
myname=`{basename $0}
fn usage {
echo 'usage: '$myname^' old-hostname new-hostname' >[2=1]
exit 1
}
! ~ $#'*' 2 && usage
echo $myname^: 'WARNING - this is not for the handyman, professional installation only.' >[2=1]
! ~ `hostname perle && {
echo $myname^: 'This needs to be run on perle.'
exit 1
}
fn rsh {
/usr/ucb/rsh $*
}
old=$1
new=$2
edcmd='1,$s/'$old^/$new^/gp'
w
q
'
rcscomment=$old^' renamed to be '$new^.
~ $new ???????* && echo $myname^': Warning: "'$new'"''s name is too long for a DECnet node name.' >[2=1]
# fix stuff in /etc
for (i in /etc/^(hosts hosts.equiv offered))
echo $edcmd | /udir/boyd/hacks/edit $i $rcscomment || exit 1
# fix /prl/machines and bereski's database
for (i in /prl/machines /prl/distribute/DataBase/Clients) {
@{ cd $i && mv $old $new} || exit 1
}
wsField -n $new -f IpSName -v $new
if (! ~ `{wsField -n $new -f IpSName} $new) {
echo $myname^': wsField database problem with "'$new^'".'
exit 1
}
# fix /proj/pmaxes
mkdir /tmp/$old^.$pid && @{ cd /tmp/$old^.$pid && getpackage /proj/pmaxes/$old }
mkdir /tmp/$new^.$pid && @{ cd /tmp/$new^.$pid && ppa i $new && getpackage /proj/pmaxes/$new }
cp /tmp/$old^.$pid^/* /tmp/$new.$pid || exit 1
@{cd /tmp/$old^.$pid && unlockpackage /proj/pmaxes/$old }
@{cd /tmp/$new^.$pid && shippackage /proj/pmaxes/$new && unlockpackage /proj/pmaxes/$new }
# cd /tmp && rm -fr $old^.$pid $new^.$pid
echo $edcmd | rsh $new 'rm -f /etc/RCS/rc.local,v ; /udir/boyd/hacks/edit /etc/rc.local'
# fix the DNS
rsh mother /udir/boyd/hacks/rename-dns $old $new
# fix the diskless root file-system's etc
#rsh mother 'test -d /dl/C/4.2A/'$old^' && cd /dl/C/4.2A && mv '$old^' '$new
#rsh mother 'test -d /dl/C/4.2A/'$new^' && addnode '$new^' -s /dl/C/4.2A/'$new^'/etc/netblk.mother.o -t /dl/C/4.2A/'$new^'/vmunix -D /dl/C/4.2A/'$new^'/var/adm/vmcore'
# .rhosts on the dump servers
for (i in kate bucket) {
echo $edcmd | rsh $i /udir/boyd/hacks/edit /.rhosts
}
# fix mountd braindamage
for (i in perle mother nacre prlp24 bucket)
rsh $i 'test -r /etc/exports && touch /etc/exports'
echo Replicating net to $new^. >[1=2]
replicate net $new
echo Replicating net to all. >[1=2]
replicate net all
© 1998,
Boyd Roberts:
boyd@fr.inter.net