FAQ
Hi Atropo,
On Tuesday 17 August 2010 15:37:51 Atropo wrote:
Hi all, i have this simple script to check if a file has arrive since
the last hour

find2perl tmp -type f -eval '-M $_ < 1/24' -print |perl

but now i would like to check in a remote server, maybe on ftp
session. i have this ftp.pl

perl -w >> ftp.log -MNet::FTP -le'
Please:

1. Don't write your program as a gigantic -e '...' block. Instead - put it in
a separate file. You can't honestly expect us to debug it.

2. See https://www.socialtext.net/perl5/index.cgi?ancient_perl

3. "use strict;" and "use warnings;".

4. Quoting perlbot:

{{{
<perlbot> use strict; use warnings; use lexical filehandles instead of globals
(open my $tmp ..vs.. open TMP), use three argument form of open, don't use
prototypes unless you really want to. don't call subs with & unless it's
required (&sub() ..vs.. sub()). check for errors (open (); ..vs.. open() or
die $!)
}}}
($second, $minute, $hour, $dayOfMonth, $month, $yearOffset, $dayOfWeek
+, $dayOfYear, $daylightSavings) = localtime();
You should use a good datetime module instead. I like
http://search.cpan.org/dist/DateTime/ but there are others.
$year = 1900 + $yearOffset;
$theGMTime = "$hour:$minute:$second, $months[$month] $dayOfMonth,
$year";
( $host, $user, $pass, $dir ) = @ARGV;
$ftp = Net::FTP->new($host) or die "$@\n"; #send mail if cannot
connect do not know how to do it
$ftp->login( $user, $pass ) or die $ftp->message;
$ftp->cwd($dir) or die $ftp->message;
$ftp->binary;
for $file ($ftp->ls){
push @files, $file;
}

for $file (@files) {
$quesesto=localtime($ftp->mdtm($file));
$localtimenoformat=localtime(time());
$mdtmnoformat=$ftp->mdtm($file);
print "MDTM with FORMAT = $quesesto\n";
print "Localtime No Format = $localtimenoformat\n";
print "MDTM No Format = $mdtmnoformat\n";
#envia_mail ();
}
$ftp->quit or die $ftp->message;

sub envia_mail {
print "Content-type: text/html\n\n";

#$title='';
$to="alexis_vasquez\@codetel\.com\.do";
$from= `hostname`;
#$subject='';

open(MAIL, "|/usr/sbin/sendmail -t");

## Mail Header
print MAIL "To: $to\n";
print MAIL "From: $from\n";
print MAIL "Subject: $subject\n\n";
## Mail Body
print MAIL "This is a test message \n";

close(MAIL);

print "<html><head><title>$title</title></head>\n<body>\n\n";

## HTML content sent, let use know we sent an email
print "
<h1>$title</h1>

A message has been sent from $from to $to

</body></html>";

You should use a here-document here.
}

'host user pass dir
Don't append the «host» parameter to the end of hte '....' - it will be part
of the program.
Still cant't figure out how to check if file is newer that an hour. I
can get this:

MDTM with FORMAT = Fri Aug 21 12:23:15 2009
Localtime No Format = Fri Aug 13 10:17:10 2010
MDTM No Format = 1250871795

But don't know how to get the 'localtime with NO Format' to compare
with the 'MDTM with NO Format'
Just use timestamps, or use the DateTime module. You can find if a timestamp
is in the last hour by "time() - $timestamp < 60*60".

Regards,

Shlomi Fish

--
-----------------------------------------------------------------
Shlomi Fish http://www.shlomifish.org/
"The Human Hacking Field Guide" - http://shlom.in/hhfg

God considered inflicting XSLT as the tenth plague of Egypt, but then
decided against it because he thought it would be too evil.

Please reply to list if it's a mailing list post - http://shlom.in/reply .

Search Discussions

Discussion Posts

Previous

Related Discussions

Discussion Navigation
viewthread | post
posts ‹ prev | 2 of 2 | next ›
Discussion Overview
groupbeginners @
categoriesperl
postedAug 17, '10 at 12:38p
activeAug 18, '10 at 12:41p
posts2
users2
websiteperl.org

2 users in discussion

Atropo: 1 post Shlomi Fish: 1 post

People

Translate

site design / logo © 2022 Grokbase