Hi,

I'm having a problem with a script. This is a bit of a long story, but I hope someone 
can help me. I've been busy with it now for two weeks, and I still don't know how to 
get it working perfectly. I'm used to C, and perl is rather new to me. Thanks in 
advance.

I would like to thank Collin Rogowski and Greg Meckes for helping me the other day, 
getting some stupid newbie errors out of my script.

What I wanna do is the following:

I'm running WOTS, this is a log checker based on perl. If it encounters a certain 
string, it can output it in certain ways. What I do is I let it execute my script 
called ./namescript and append the string it got from the logfile. These are some 
examples:

./namescript Mar 16 12:12:04 ns4 named-xfer[16809]: [212.104.202.50] not authoritative 
for ero-art.com, SOA query got rcode 0, aa 0,
ancount 0, aucount 12

./namescript Mar 14 12:14:00 ns4 named-xfer[16876]: connect(212.104.197.10) for zone 
reeshof.nl failed: Connection refused

./namescript Mar 13 17:30:05 ns4 named-xfer[13847]: [212.104.197.10] not authoritative 
for hvb-hypotheken.nl, SOA query got rcode 2, aa 0,
ancount 0, aucount 0

What the script does is that it has to check the ip adres in the string, and make an 
email for our customers to check their nameserver. It compares the ip adres, to the IF 
statements, and fills some variables so It can make the email, and send it. 

What I'm doing is split the string bij spaces, and put it in an array (I'm doing this, 
so I can use pieces of the string in the mail I'm sending to our customers)
This works fine if I don't use the following signs in the string: ( ) [ ] 
If I do it like here under I don't have any problems:

./namescript Mar 16 12:12:04 ns4 named-xfer16809: 212.104.202.50 not authoritative for 
ero-art.com, SOA query got rcode 0, aa 0,
ancount 0, aucount 12

./namescript Mar 14 12:14:00 ns4 named-xfer16876: connect 212.104.197.10 for zone 
reeshof.nl failed: Connection refused

./namescript Mar 13 17:30:05 ns4 named-xfer13847: 212.104.197.10 not authoritative for 
hvb-hypotheken.nl, SOA query got rcode 2, aa 0,
ancount 0, aucount 0

But if I do it like : (This is the output from the log, appended to my script)

./namescript Mar 16 12:12:04 ns4 named-xfer[16809]: [212.104.202.50] not authoritative 
for ero-art.com, SOA query got rcode 0, aa 0,
ancount 0, aucount 12

./namescript Mar 14 12:14:00 ns4 named-xfer[16876]: connect(212.104.197.10) for zone 
reeshof.nl failed: Connection refused

./namescript Mar 13 17:30:05 ns4 named-xfer[13847]: [212.104.197.10] not authoritative 
for hvb-hypotheken.nl, SOA query got rcode 2, aa 0,
ancount 0, aucount 0

It always gives the error : NO MATCH
The scripts exits, and doesn't mail anything. I already tried to do:

./namescript Mar 16 12:12:04 ns4 named-xfer[16809]: [212.104.202.50] not authoritative 
for ero-art.com, SOA query got rcode 0, aa 0,
ancount 0, aucount 12 | sed "s#\[##g" | sed "s#\]##g" | sed "s#(##g" | sed "s#)##g"
(This is supposed to remove the ( ) [ ]    )

But then it doesn't recognise it, and just mails me the string without putting it in 
the array. 

So my question is, can I remove the ( ) [ ]  while reading the ARGV and replace it 
with a space or something, this is the last  problem I've got. I don't know why it 
gives me the error NO MATCH when it detects a ( ) [ ].

Thanks in advance

Jose Vazquez
[EMAIL PROTECTED]

################################
#!/usr/bin/perl -w

my @zin = @ARGV;  #put string in an array
my $t;
my $name;
my $email;
my $bericht;
my $tick;
my $z;

print "@zin\n"; #just for testing

$tick = "0";
$z = 20;

#for ($t=0;$t<$z;$t++) {
#       print "$zin[$t] [$t]\n\r";
#}

for ($t=0;$t<$z;$t++) {

if ($zin[$t] eq "212.104.202.50") {
        $name = "NS1.NETCASE.NL";
        $email = '[EMAIL PROTECTED]';
 $bericht ="Hoi wij krijgen de melding $zin[6] $zin[7] $zin[8] $zin[9] van $name, 
kunnen jullie hier iets aan doen?";
        $tick = "1";
        $t = $z;
}

elsif ($zin[$t] eq "212.104.194.5") {
        $name = "NS.VSM-HOSTING.NL";
        $email = '[EMAIL PROTECTED]';
$bericht ="Hoi wij krijgen de melding $zin[6] $zin[7] $zin[8] $zin[9]  van $name, 
kunnen jullie hier iets aan doen?";
        $tick = 1;
        $t = $z;
}

elsif ($zin[$t] eq "195.114.231.200") {
        $name = "NS2.SUPPORT.NL";
        $email = '[EMAIL PROTECTED]';
$bericht ="Hoi wij krijgen de melding $zin[6] $zin[7] $zin[8] $zin[9] van $name, 
kunnen jullie hier iets aan doen?";
        $tick = 1;
        $t = $z;
}

elsif ($zin[$t] eq "212.104.201.196") {
        $name = "NS1.SCHROER.NL";
        $email = '[EMAIL PROTECTED]';
$bericht ="Hoi wij krijgen de melding $zin[6] $zin[7] $zin[8] $zin[9] van $name, 
kunnen jullie hier iets aan doen?";
        $tick = 1;
        $t = $z;
}

elsif ($zin[$t] eq "212.104.197.10") {
        $name = "NS1.PROMISUM.NL";
        $email = '[EMAIL PROTECTED]';
$bericht ="Hoi wij krijgen de melding $zin[6] $zin[7] $zin[8] $zin[9] van $name, 
kunnen jullie hier iets aan doen?";
        $tick = 1;
        $t = $z;
}

elsif ($zin[$t] eq "212.104.195.194") {
        $name = "NS1.NLWEBSERVICE.COM";
        $email = '[EMAIL PROTECTED]';
$bericht ="Hoi wij krijgen de melding $zin[6] $zin[7] $zin[8] $zin[9] van $name, 
kunnen jullie hier iets aan doen?";
        $tick = 1;
        $t = $z;
}

elsif ($zin[$t] eq "212.104.210.2") {
        $name = "NS.CLICKHERE.NL";
        $email = '[EMAIL PROTECTED]';
$bericht ="Hoi wij krijgen de melding $zin[6] $zin[7] $zin[8] $zin[9] van $name, 
kunnen jullie hier iets aan doen?";
        $tick = 1;
        $t = $z;
}
}

if ($tick eq "1") {
# this one is for sending the email if it recognises the IP
        open(M,"|/usr/sbin/sendmail $email") || die $!;
        print M "Subject: Er is een fout opgetreden bij ophalen domein van uw 
nameserver!\n";
        print M "\n"; # header en body scheiden dmv een lege regel
        print M "$bericht";
        close M;

}

elsif ($tick eq "0") {
        # this one is for the rest!
        $email = '[EMAIL PROTECTED]';
        open(M,"|/usr/sbin/sendmail $email") || die $!;
        print M "Subject: Fout op nameserver!\n";
        print M "\n"; # header en body scheiden dmv een lege regel
        print M "@zin";
        close M;
        exit;
}


########################################

Reply via email to