Hi,

I have a script named renamer.pl that takes images from a directory and renames images and stores image meta information in a mysql. i also have a script that sends an email notification when excecuted to a desired email address.

is there away that i could combine the 2 scripts together, so when the meta information are inserted into MySQL, an email is sent to me.

Cheers

Mel


---------------------------------------emailtest.pl


#!/usr/local/bin/perl

use Net::SMTP;

print "Content-type: text/plain", "\n\n";

my $DEBUG = 1;

if($DEBUG)
{
$| = 1;
open(STDERR, ">&STDOUT");
}

# Set this variable to your smtp server name
my $ServerName = "smtp.dundee.ac.uk";


# Create a new SMTP object $smtp = Net::SMTP->new($ServerName, Debug => 1);

# If you can't connect, don't proceed with the rest of the script
die "Couldn't connect to server" unless $smtp;

# Initiate the mail transaction
# Your "real" email address
my $MailFrom = "[EMAIL PROTECTED]";

# Recipient's "real" email address
my $MailTo = "[EMAIL PROTECTED]";

$smtp->mail( $MailFrom );
$smtp->to( $MailTo );

# Start the mail
$smtp->data();

# Send the header
# This address will appear in the message
$smtp->datasend("To: [EMAIL PROTECTED]");

# So will this one
$smtp->datasend("From: [EMAIL PROTECTED]");
$smtp->datasend("Subject: image_alert\n");
$smtp->datasend("\n");

# Send the body.
$smtp->datasend("This is to notify you of a new image being sent to the server!\n\n");


# Send the termination string
$smtp->dataend();

# Close the connection
$smtp->quit();



--------------------------------renamerr.pl
#!/usr/bin/perl

use strict;
use warnings;

use DBI;
use Date::Manip;

=head1 NAME # renamer - renames files received by ftp, moving them to a new
directory

=head1 SYNOPSIS

nohup ./renamer image /home/httpd/htdocs /home/me/images jpg renamer.process
&

=head1 DESCRIPTION

#The above instructs renamer to look for files called image.jpg in
/home/httpd/htdocs.
#It checks once per minute for such a file to appear. If it sees a
#readable file called /home/httpd/htdocs.jpg it moves it
to/home/httpd/htdocs/image.200302251530.jpg
#where the number is a
#time stamp with year (four digits), month, day of the month, hour (in24
mode), and minute.
#Read the bugs section closely.

=head1 BUGS

#The original and new directories must be on the same file system.The
#program probably does not work on windows systems.
#The daemon behavior is weak.Not much testing has been done, so the script
may have other problems.

=cut

my $usage = <<EOUSAGE;
usage: $0 initial_name original_dir new_dir suffix lockfile
example: $0 pic /home/httpd/htdocs /home/me/images jpg
/home/me/renamer.process
EOUSAGE

my $check_file = shift or die $usage;
my $original_dir = shift or die $usage;
my $new_dir = shift or die $usage;
my $suffix = shift or die $usage;
my $lockfile = shift or die $usage;
##################################
# If you put it into the cron, comment out between the START and END BLOCK,
# and uncomment the section below it so you don't get multiple
# copies running. Also, comment out the
# lockfile bits above.
#START BLOCK
exit if (fork());

while (-e "$lockfile") {
process($check_file) if (-r "$original_dir/$check_file.$suffix");
sleep 30;
}
#END BLOCK

##################################
#
# process($check_file) if (-r "$original_dir/$check_file.$suffix");
#
##################################

sub process {
my $file = shift;
my @st = (stat("$original_dir/$file.$suffix"));
my ($Second, $Minute, $Hour, $Day, $Month, $Year, $WeekDay, $DayOfYear,
$IsDST) = localtime($st[10]);
$Year += 1900;
$Month++;
my $stamp = sprintf "%4d_%02d_%02d_%02d_%02d_%02d", $Year, $Month, $Day,
$Hour, $Minute, $Second;
print "renaming $original_dir/$file.$suffix to
$new_dir/$stamp.$suffix\n";
rename "$original_dir/$file.$suffix", "$new_dir/$stamp.$suffix" or warn
"couldn't rename file: $! $file to $new_dir/$file.$stamp.$suffix\n";
print "adding $new_dir/$stamp.$suffix to database\n";
my $single_string = $new_dir . '/' . $stamp . '.' . $suffix;
infoinsert ($single_string);
}





############################################################################
#
# Connect to Database Named cctvimages on the localhost with the root user
# $dbh=DBI->connect(DBI:mysql;$database", $user, $password);
# and insert info about the file given as the argument $_[0];
############################################################################
#




sub infoinsert { my ($file) = @_; die"Failed to get the info\n\$file is: $file" if not defined $file; my $dbh = DBI->connect("DBI:mysql:dbname=cctvimages;host=localhost","root", "********", {'RaiseError' => 1}); my $size; my $mtime; my $secs; ($size, $secs) = (stat ($file))[7,9]; $mtime = &ParseDateString("epoch $secs"); # even after conversion ':' is used to seperate hh and mn and ss $mtime =~ s/://g; # the above swaps out the ':' for nothing $file =~ s/\/home\/me\/images\///; # the above strips path print"size is $size\nmodified is $mtime\nfilename is $file\n";

my $rows_affected = $dbh->do("INSERT INTO imageinfo VALUES(null, '$file',
'$size', '$mtime')")
or die "Do Fails: $DBI::errstr\n";


my $sql = "SELECT * FROM imageinfo"; my $sth = $dbh->prepare($sql);

$sth->execute or die"Execute fails: $DBI::errstr\n";
$sth->finish;

$dbh->disconnect;
}


_________________________________________________________________
Use MSN Messenger to send music and pics to your friends http://www.msn.co.uk/messenger



-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to