in reply to How to get latest IP and hostname.
How do i get new log with the latest info ?
You need to sort your file on the date field to get the "latest" info, however your date field is not sortable in its present condition. To sort it properly you need to have the most significant field (year) first followed in order by significance to the least significant field (seconds). Or you could store the field as the Unix time in seconds since the epoch and sort it numerically.
You should start your programs with these two lines to let Perl help you find mistakes:
use warnings; use strict;
use Time::Local; $today = timelocal(localtime);
You can replace those two lines with:
$today = time;
Although you never use the $today variable anywhere.
$datafile=`cat ../hosts/iplist.txt | sort -r | sort -u -t ',' -k 2,2 > + ../hosts/latestip.txt`;
You have a useless use of cat there:
$datafile = `sort -r ../hosts/iplist.txt | sort -u -t ',' -k 2,2 > ../ +hosts/latestip.txt`;
And you don't really need a temporary file there, you could just use open on the pipe.
my $count = 0;
You never use this variable anywhere.
open (DATA,"/home/myplace/hosts/latestip.txt") || die ("Can't Open dat +a File \n"); @data=<DATA>; close DATA;
You don't really need this temp file, and you don't really need to read the whole file into memory:
open PIPE, '-|', 'sort -r ../hosts/iplist.txt | sort -u -t ',' -k 2,2' or die "Cannot open pipe from sort because: $!"; while ( <PIPE> ) { # do your stuff here } close PIPE or warn $! ? "Error closing sort pipe: $!" : "Exit status $? from sort";
$x=0;
You never use this variable anywhere.
sub header_response { print "Content-type: text/html\n\n"; print "<HTML><HEAD><TITLE>test</TITLE>\n"; print "</HEAD>\n"; print qq^<BODY background="images/bg2.jpg" TEXT="blue" LINK="blue" + VLINK="#9900CC" ALINK="#330066">\n^; print "<CENTER><h1><font color=black>Our IP Info</font></h1></CENT +ER>\n"; print "<BR>\n"; print "</form></CENTER>\n"; print "<center><FONT size=+1><TABLE BORDER=1><TR bgcolor=#669900>< +TD><center><font color=white>Host Name</center></TD><TD><center><font + color=white>IP address</center></TD><TD><font color=white><center>La +st Boot Windows</center></TD></TR>\n\n"; return; } sub footer_response { print "</TABLE></font></CENTER>\n"; print "<BR><BR><BR><BR>\n"; print " </BODY></HTML>\n"; return; }
Why are these subroutines? Each one should just be a single print statement:
print <<'HTML'; Content-type: text/html <HTML><HEAD><TITLE>test</TITLE> </HEAD> <BODY background="images/bg2.jpg" TEXT="blue" LINK="blue" VLINK="#9900 +CC" ALINK="#330066"> <CENTER><h1><font color=black>Our IP Info</font></h1></CENTER> <BR> </form></CENTER> <center><FONT size=+1><TABLE BORDER=1><TR bgcolor=#669900><TD><center> +<font color=white>Host Name</center></TD><TD><center><font color=whit +e>IP address</center></TD><TD><font color=white><center>Last Boot Win +dows</center></TD></TR> HTML print <<'HTML'; </TABLE></font></CENTER> <BR><BR><BR><BR> </BODY></HTML> HTML
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: How to get latest IP and hostname.
by britney (Acolyte) on Apr 06, 2011 at 22:28 UTC |