On Tue, Sep 17, 2002 at 11:49:16AM +0200, Dennis Bieling wrote:
> Hi!
>
> Is anyone of you using the samba.monitor for mon?
> I have some problems in making it work.
> Everytime mon runs, it produces an mail.alert with just telling me the
> name of the host and the service but nothing about the problem.
> There is no warning about the service not running or anything else.
> This happens regardless if the samba service is running or not.
> Anyone out there who can help me ?
>
After some tests, i decided to rewrite the monitor
for more recent versions of smbclient.
I attach my version. You should try it on your system
probably with the -d flag from the command line.
I use the following
smbclient_auth.cf:
user=guest
password=
Ciao
Dietmar
--
Alles Gute / best wishes
Dietmar Goldbeck E-Mail: [EMAIL PROTECTED]
Reporter (to Mahatma Gandhi): Mr Gandhi, what do you think of Western
Civilization? Gandhi: I think it would be a good idea.
#!/usr/bin/perl -w
#
# Use: try to connect anonymously to a Samba server, and
# wait for the right output.
#
# For use with "mon".
#
use Getopt::Std;
use strict;
use vars qw( %failures $failures $host $member $details
$error
$opt_A $CREDFILE
$opt_d $DEBUG);
getopts ("dA:");
$DEBUG = $opt_d || 0;
$CREDFILE = $opt_A || "/etc/mon/smbclient_auth.cf";
%failures = ();
foreach $host (@ARGV) {
($error, $details) = Samba_test ($host);
if($error) {
$failures{$host} = $details;
}
}
my($member);
if ((keys(%failures))==0) {
# we are happy
exit 0;
} else {
# summary:
print join (" ", sort keys(%failures)), "\n";
# all details:
foreach $member (sort keys(%failures)) {
print "$member: ", $failures{$member};
}
exit 1;
}
sub Samba_test {
my ($Server_name) = shift (@_);
print STDERR "checking Server $Server_name\n"
unless ! $DEBUG;
my $serviceList = `smbclient -A $CREDFILE -L $Server_name 2>&1`;
my $exit_value = $? >> 8;
print STDERR "smbclient exit_value = $exit_value\nsmbclient output:
\n$serviceList"
unless ! $DEBUG;
if($exit_value) {
return(1, $serviceList);
}
# check smbclient output
if($serviceList !~ /Domain=\[.*\]\s+OS=\[.*\]\s+Server=\[.*\]/ ||
$serviceList !~ /Sharename/ ||
$serviceList !~ /Workgroup/ ||
$serviceList !~ /Server/) {
return(1, "smbclient output error:\n" . $serviceList);
}
return (0, undef);
}