1
0
Files
irix-657m-src/eoe/cmd/ktools/Regenerate
2022-09-29 17:59:04 +03:00

119 lines
3.0 KiB
Perl
Executable File

#!/usr/local/bin/perl
#
# set up the new config files for the annex boxes.
#
# $Header: /proj/irix6.5.7m/isms/eoe/cmd/ktools/RCS/Regenerate,v 1.5 1996/09/20 10:02:53 cwilson Exp $
#
# feed -d to not dist out
# feed a single annex to only update that annex.
#
#
$CONFIGFILE = "/usr/annex/portsfile";
$CU_SYS = "cu_system_names";
$CU_DEV = "cu_device_names";
$ANNEXCONFIG = "annex_config";
$DONTDOIT = 1 if $ARGV[0] eq '-d';
foreach ($CU_SYS, $CU_DEV, $ANNEXCONFIG) {
rename ($_, "$_.old");
}
open(CONF, $CONFIGFILE) || die "unable to open portsfile";
while (<CONF>) {
($conf) = /^#CONF (.*)/ if /^#CONF (.*)/;
($note) = /^#NOTE (.*)/, $Note .= $note . "\n" if /^#NOTE (.*)/;
next if /^#/ && !/^#[NOTE|CONF]/;
$AnnexHost{$1} = "$2$;$3" if /^annex-host\s+(\S+)\s+(\d+)\s+(\S+)/;
if ( /^(\S+)\s+.*rtelnetd/ ) {
push (@Rt, $1);
}
if ( /^([\w-]+\.(con|dbg)\.\d{1})\s+(\S+)\s+(\d+)/ ) {
$Annex{$3} .= $1 . '~' . $4 . $; ;
}
}
if (grep(/$ARGV[0]/, keys %Annex)) {
$UpdateOne = 1;
}
#
# backup the current files
#
foreach $annex ($UpdateOne ? $ARGV[0] : keys Annex ) {
rename ($annex, "$annex.$ANNEXCONFIG.old");
}
#
# now update the config files.
#
foreach $annex ($UpdateOne ? $ARGV[0] : keys Annex ) {
open (AX, ">$annex.$ANNEXCONFIG") || die "unable to open $ANNEXCONFIG, $!";
print AX "# Changes to the Engineering Annexes configuration\n";
print AX "# Effecting: " . `date` . "\n";
@L = (); $H = ();
print AX "annex $annex\n\n";
@hosts = split(/$;/, $Annex{$annex});
foreach (sort @hosts) {
($location, $port) = /(.*)~(.*)/;
($host) = $location =~ /^([\w-]+)\./;
$L[$port] = $location;
$H[$port] = $host;
}
for ($i = 1; $i <= (split(/$;/, $AnnexHost{$annex}))[0]; $i++) {
if ($L[$i]) {
print AX "set port=$i user_name\t\"$H[$i]\"\n";
print AX "set port=$i location\t\"$L[$i]\"\n";
print AX "set port=$i mode \"slave\"\n";
print AX "\n" if $oldhost ne $host;
$oldhost = $host;
}
else {
print AX "\n" if $oldhost ne "INVALID";
print AX "set port=$i user_name\t\"INVALID\"\n";
print AX "set port=$i location\t\"INVALID\"\n";
print AX "set port=$i mode \"slave\"\n";
print AX "\n" if $oldhost ne "INVALID";
$oldhost = "INVALID";
}
}
print AX "#-------\n\n";
close (AX);
}
#
# update cu devices file for rtelnetd
#
open (CUD, ">$CU_DEV") || die "unable to open $CU_DEV, $!";
print CUD "# Changes to the Engineering Annexes CU device configuration\n";
print CUD "# Effecting: " . `date` . "\n";
foreach (@Rt) {
print CUD "Direct annex/$_\t- Any direct\n";
}
close CUD;
#
# now update the annexes
#
if ($DONTDOIT) {
print stderr "Updated config files *not* pushed to the annexes.\n";
exit 0;
}
print stderr "Now loading annexes with updated config file..\n" if !$DONTDOIT;
foreach $annex ($UpdateOne ? $ARGV[0] : keys Annex ) {
print stderr "\n==>Updating $annex...\n";
print `../annex_server/na < $annex.$ANNEXCONFIG` if !$DONTDOIT;
}