#
#========================================================================
#
-# Version 2.0.0_CVS, released 18 Jan 2003.
+# Version 2.0.0_CVS, released 3 Feb 2003.
#
# See http://backuppc.sourceforge.net.
#
my $BinDir = $bpc->BinDir();
my %Conf = $bpc->Conf();
my $NeedPostCmd;
+my $Hosts;
$bpc->ChildInit();
# host name via NetBios using nmblookup.
#
$hostIP = $client;
- exit(1) if ( $bpc->CheckHostAlive($hostIP) < 0 );
+ exit(1) if ( $bpc->CheckHostAlive($hostIP) < 0
+ || $Conf{NmbLookupCmd} eq "" );
($client, $user) = $bpc->NetBiosInfoGet($hostIP);
exit(1) if ( $host !~ /^([\w\.\s-]+)$/ );
- my $hosts = $bpc->HostInfoRead($client);
- exit(1) if ( !defined($hosts->{$client}) );
+ $Hosts = $bpc->HostInfoRead($client);
+ exit(1) if ( !defined($Hosts->{$client}) );
$host = $client;
+} else {
+ $Hosts = $bpc->HostInfoRead($client);
}
my $Dir = "$TopDir/pc/$client";
$SIG{INT} = \&catch_signal;
$SIG{ALRM} = \&catch_signal;
$SIG{TERM} = \&catch_signal;
+$SIG{PIPE} = \&catch_signal;
+my $Pid = $$;
#
# Make sure we eventually timeout if there is no activity from
open(LOG, ">>", "$Dir/LOG");
select(LOG); $| = 1; select(STDOUT);
+#
+# For the -e option we just expire backups and quit
+#
+if ( $opts{e} ) {
+ BackupExpire($client);
+ exit(0);
+}
+
if ( !$opts{d} ) {
#
# In the non-DHCP case, make sure the host can be looked up
# Figure out what to do and do it
###########################################################################
-#
-# For the -e option we just expire backups and quit
-#
-if ( $opts{e} ) {
- BackupExpire($client);
- exit(0);
-}
-
#
# See if we should skip this host during a certain range
# of times.
my $signame = shift;
my $fileExt = $Conf{CompressLevel} > 0 ? ".z" : "";
+ #
+ # Ignore signals in children
+ #
+ return if ( $Pid != $$ );
+
print(LOG $bpc->timeStamp, "cleaning up after signal $signame\n");
+ $SIG{$signame} = 'IGNORE';
UserCommandRun("DumpPostUserCmd") if ( $NeedPostCmd );
$XferLOG->write(\"exiting after signal $signame\n");
$XferLOG->close();
sub CorrectHostCheck
{
my($hostIP, $host) = @_;
- return if ( $hostIP eq $host && !$Conf{FixedIPNetBiosNameCheck} );
+ return if ( $hostIP eq $host && !$Conf{FixedIPNetBiosNameCheck}
+ || $Conf{NmbLookupCmd} eq "" );
my($netBiosHost, $netBiosUser) = $bpc->NetBiosInfoGet($hostIP);
return "host $host has mismatching netbios name $netBiosHost"
- if ( $netBiosHost ne $host );
+ if ( $netBiosHost ne $host );
return;
}
return if ( !defined($Conf{$type}) );
my $vars = {
- xfer => $xfer,
- client => $client,
- host => $host,
- hostIP => $hostIP,
- share => $ShareNames->[0],
- shares => $ShareNames,
+ xfer => $xfer,
+ client => $client,
+ host => $host,
+ hostIP => $hostIP,
+ user => $Hosts->{$client}{user},
+ moreUsers => $Hosts->{$client}{moreUsers},
+ share => $ShareNames->[0],
+ shares => $ShareNames,
XferMethod => $Conf{XferMethod},
- sshPath => $Conf{SshPath},
- LOG => *LOG,
- XferLOG => $XferLOG,
- stat => \%stat,
- xferOK => $stat{xferOK},
- type => $type,
+ sshPath => $Conf{SshPath},
+ LOG => *LOG,
+ XferLOG => $XferLOG,
+ stat => \%stat,
+ xferOK => $stat{xferOK},
+ type => $type,
};
my $cmd = $bpc->cmdVarSubstitute($Conf{$type}, $vars);
$XferLOG->write(\"Executing $type: @$cmd\n");