-
You should verify that chdir worked.
-
You create the variables $a1 $a2 $a3 $a4 $b1 $b2 $b3 $b4 but you never use them.
-
You log a message if $current_ip could not be obtained but you proceed to the next step as if it had been.
-
You log a message if "myip.txt" could not be opened but you proceed to the next step as if it had been.
-
You compare the two strings $readip and $current_ip which may have extraneous trailing whitespace.
-
Your use of system sends an error message to the log file when it succeeds but no message if it fails.
Something like this may be better:
#!/usr/bin/perl
use warnings;
use strict;
use Tie::File;
use LWP::Simple;
use Sys::Syslog qw( :DEFAULT setlogsock );
my $file = '/root/script/myip.txt';
my $emailadd = 'your@email.com';
my $fromadd = 'ipwatch@yourmachine';
my $current_ip = get( 'http://www.chisono.it/ip.asp' ) or do {
logit( 'err', "Cannot retrieve the IP address\n" );
exit 1;
};
$current_ip =~ s/\s+$//;
tie my @read_ip, 'Tie::File', $file or do {
logit( 'err', "Cannot open $file: $!\n" );
exit 2;
};
if ( $read_ip[ 0 ] eq $current_ip ) {
logit( 'info', "Address not changed\n" );
exit 0;
}
logit( 'info', "Address changed: old IP: $read_ip[0] ; New IP: $curren
+t_ip\n" );
$read_ip[ 0 ] = $current_ip;
untie @read_ip;
# 0 == system qq(mailx -s "IP changed!" -a "From: IPWatch <$fromadd>"
+$emailadd < myip.txt) or do {
#
# Update -- changed "< myip.txt" to "< $file"
#
0 == system qq(mailx -s "IP changed!" -a "From: IPWatch <$fromadd>" $e
+mailadd < $file) or do {
logit( 'err', "Cannot send the email!\n" );
exit 3;
};
sub logit {
my ( $priority, $msg ) = @_;
return unless $priority =~ /^(?:info|err|debug)$/;
setlogsock( 'unix' );
openlog( $0, 'pid,cons', 'user' );
syslog( $priority, $msg );
closelog();
}
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
| |
For: |
|
Use: |
| & | | & |
| < | | < |
| > | | > |
| [ | | [ |
| ] | | ] |
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.