I wrote the following program to find the WAN IP address of router, then
send it in an http request to the website of the organization for dns
updating. Then, I have a mail message sent to myself notifying me of the
update.
I received the following errors. I am still somewhat of a newbie, so
please have a little patience with me. The error messages are as
follows:
Use of uninitialized value in print at
c:\windows\desktop\perl_hacks\dns_lwp-mai
l.pl line 87.
Line 87 is print $value;
I thought I initialized this with my value;
Is this because of strict? How would I pass that value if that is the
case?
....and the answer is......
good 24.147.206.7
Use of uninitialized value in concatenation (.) at
c:\windows\desktop\perl_hacks
\dns_lwp-mail.pl line 104.
line 104 is %mail = ( To => '[EMAIL PROTECTED]',
#! c:\perl\bin -w
############################################################
#
# Author: Craig Monroe
# Date: July 6, 2001
# Abstract: Wrote this utility to automatically update
# my dnsalias record. Will add mail confirmation.
#
#
use Mail::Sendmail;
use IO::Socket;
use IO::File;
use strict;
my $cayman = "192.168.1.254";
my $ipaddress;
my $value;
my $ua;
my $req;
my $res;
my $line;
my $time;
my $dayname;
my $month;
my $day;
my $clocktime;
my $year;
my $count;
my %mail;
$count = "0";
#system('cls'); commenting out screen clears for now to get errors
# infinite loop
{
#Get the day and if it matches the criteria, run the program
$time = scalar(localtime);
($dayname, $month, $day, $clocktime, $year) = split (/\s+/, $time);
&Title;
if ((($day eq "6") && ($count == 0)) || (($day eq "25") && ($count ==
0))) {
# Open a connection to the cayman
my $remote = new IO::Socket::INET(PeerAddr=>$cayman,
PeerPort=>23,
Proto=>"tcp",
Type=>SOCK_STREAM)
or die "Couldn't connect to IP address $cayman\nSystem error: $!";
# set buffering off
$remote->autoflush(1);
print $remote "xxxxx\n";
sleep('3');
print $remote "xxxxx\n";
sleep('3');
print "\nConnecting to the Cayman at $cayman ....\n\n";
sleep('3');
print $remote "show ip int\n";
print $remote "quit\n";
print "\nParsing the output to grab the WAN IP address....\n\n";
sleep('3');
while (defined ($line = <$remote>)) {
$line = substr("$line",1);
if ($line =~ /^IP Address/){
($ipaddress, $value) = split(/\s+:/, $line);
}
}
close ($remote);
# Create a web user agent and send the update to dnsalias
#system('cls'); commenting out screen clears for now to get errors
# Create a user agent object
use LWP::UserAgent;
$ua = new LWP::UserAgent;
$ua->agent("AgentName/0.1 " . $ua->agent);
print "Sending the WAN IP to DNSALIAS.NET\n\n";
# Create a request
$req = new HTTP::Request GET =>
'http://test:[EMAIL PROTECTED]/nic/update?system=dyndns&hostname=test.dnsalias.org&
myip='.'$value'.'&wildcard=OFF&offline=NO';
print $value;
sleep('3');
# Pass request to the user agent and get a response back
$res = $ua->request($req);
# Check the outcome of the response
if ($res->is_success) {
print "....and the answer is......\n\n";
print $res->content;
print "\n\n";
sleep('3');
}
else {
print "Didn't work\n";
}
$count++;
%mail = ( To => '[EMAIL PROTECTED]',
From => '[EMAIL PROTECTED]',
Subject => 'Craig\'s DNS Alias Hostname Update',
Message => "On $time your DNS name has been updated with
$value");
sendmail(%mail) or die $Mail::Sendmail::error;
sleep('5');
} # end of if
else {
#system('cls'); commenting out screen clears for now to get errors
&Title;
print "\n\nWaiting 24 Hours from $time to try again..";
sleep ('86400');
$count = 0;
} # end of else
redo;
} # end of while
sub Title {
print "DNS Updater\n";
print "=================\n\n\n";
}