#!/usr/bin/perl -w # nerxscode # Time-stamp: <2001-07-16 16:55:05 nik@nerxs.com> # lnck.pl # Checks urls. Returns state, last modified or a hash if last modified does not exist. # https not implemented yet. my $version = "0.1 alpha"; use LWP::UserAgent; use HTTP::Request; use HTTP::Response; use Digest::MD5 qw(md5 md5_hex md5_base64); $| = 1; # Output autoflush my $agent = $0 . " " . $version; my $last_mod; $ua = LWP::UserAgent->new(); $ua->agent($agent); if (@ARGV) { $i = 0; while ($i <= $#ARGV) { $url = $ARGV[$i++]; getData(); } } else { while () { if ($_ ne "\n") { $url = $_; getData(); } } } sub getData { $digest = ""; $request = HTTP::Request->new(GET => $url); $response = $ua->request($request); if ($response->is_success) { # print $response->headers_as_string . "\n\n"; $last_mod = $response->last_modified; chomp ($url); print "URL:\t" . $url . "\n"; print "STATE:\t" . $response->status_line . "\n"; print "CHECK:\t"; if ($response->date) { $date = $response->date . "\n"; ($seconds, $minutes, $hours, $day_of_month, $month, $year) = localtime($date); printf ("%04d-%02d-%02d %02d:%02d:%02d\n", $year+1900, $month+1, $day_of_month, $hours, $minutes, $seconds); } else { $date = `date "+%Y-%m-%d %H:%M:%S"`; chomp($date); print $date . "\n"; } if (!$last_mod || $last_mod eq $date) { $digest = md5_hex($response->content); print "MODIF:\t"; ($seconds, $minutes, $hours, $day_of_month, $month, $year) = localtime(0); printf ("%04d-%02d-%02d %02d:%02d:%02d\n", $year+1900, $month+1, $day_of_month, $hours, $minutes, $seconds); } else { print "MODIF:\t"; ($seconds, $minutes, $hours, $day_of_month, $month, $year) = localtime($last_mod); printf ("%04d-%02d-%02d %02d:%02d:%02d\n", $year+1900, $month+1, $day_of_month, $hours, $minutes, $seconds); } print "HASH:\t" . $digest . "\n\n"; } else { $state = $response->status_line; chomp ($url); chomp ($state); print "URL:\t". $url . "\n"; print "STATE:\t" . $state . "\n"; print "CHECK:\t" . `date "+%Y-%m-%d %H:%M:%S"`; print "MODIF:\t" . "1970-01-01 00:00:00"; print "HASH:\t" . $digest . "\n\n"; } # print $response->content . "\n"; # print "-" x 60 . "\n"; }