From a8b3c95e00d8d14379bdc62de95efd7aea4ca429 Mon Sep 17 00:00:00 2001 From: mattf Date: Mon, 28 Nov 2011 21:23:59 +0000 Subject: [PATCH] Added FTP Persistence option to cron FTP scripts git-svn-id: svn://192.168.202.10@1757 3d104415-ff17-0410-8863-d5cf3c621b8a --- bin/AST_CRON_audio_3_ftp.pl | 45 ++++++++++++++++++++++++++++------ bin/AST_CRON_audio_4_ftp2.pl | 47 +++++++++++++++++++++++++++++------- 2 files changed, 75 insertions(+), 17 deletions(-) diff --git a/bin/AST_CRON_audio_3_ftp.pl b/bin/AST_CRON_audio_3_ftp.pl index 0e386fa2..93137628 100644 --- a/bin/AST_CRON_audio_3_ftp.pl +++ b/bin/AST_CRON_audio_3_ftp.pl @@ -45,6 +45,7 @@ # 90827-2013 - Fixed list limit option # 91123-0037 - Added FTP CLI options # 110524-1049 - Added run-check concurrency check option +# 111128-1615 - Added Ftp persistence option # ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); @@ -69,6 +70,7 @@ $VARHTTP_path = 'http://10.0.0.4'; $file_limit = 1000; $list_limit = 1000; +$FTPpersistent=0; ### begin parsing run-time options ### if (length($ARGV[0])>1) @@ -86,10 +88,10 @@ if (length($ARGV[0])>1) print " [--help] = this screen\n"; print " [--debug] = debug\n"; print " [--debugX] = super debug\n"; + print " [--test] = test\n"; print " [--transfer-limit=XXX] = number of files to transfer before exiting\n"; print " [--list-limit=XXX] = number of files to list in the directory before moving on\n"; print " [--debugX] = super debug\n"; - print " [--test] = test\n"; print " [--GSM] = copy GSM files\n"; print " [--MP3] = copy MPEG-Layer-3 files\n"; print " [--OGG] = copy OGG Vorbis files\n"; @@ -100,7 +102,9 @@ if (length($ARGV[0])>1) print " [--ftp-server=XXX] = FTP server\n"; print " [--ftp-login=XXX] = FTP server login account\n"; print " [--ftp-pass=XXX] = FTP server password\n"; - print " [--ftp-dir=XXX] = FTP server directory\n\n"; + print " [--ftp-dir=XXX] = FTP server directory\n"; + print " [--ftp-persistent] = Does not log out between every file transmission\n"; + print "\n"; exit; } else @@ -217,6 +221,12 @@ if (length($ARGV[0])>1) if ($DB > 0) {print "\n----- FTP DIRECTORY: $VARFTP_dir -----\n\n";} } + if ($args =~ /--ftp-persistent/i) + { + $FTPpersistent=1; + if ($DB > 0) + {print "\n----- FTP PERSISTENT: $FTPpersistent -----\n\n";} + } } } else @@ -381,8 +391,13 @@ foreach(@FILES) if ($DB) {print "|$recording_id|$start_date|$ALLfile| |$SQLfile|\n";} ### BEGIN Remote file transfer - $p = Net::Ping->new(); - $ping_good = $p->ping("$VARFTP_host"); + if ( ($FTPpersistent > 0) && ($ping_good > 0) ) + {$ping_good=1;} + else + { + $p = Net::Ping->new(); + $ping_good = $p->ping("$VARFTP_host"); + } if (!$ping_good) { @@ -397,9 +412,20 @@ foreach(@FILES) $start_date_PATH=''; $FTPdb=0; if ($DBX>0) {$FTPdb=1;} - $ftp = Net::FTP->new("$VARFTP_host", Port => $VARFTP_port, Debug => $FTPdb); - $ftp->login("$VARFTP_user","$VARFTP_pass"); - $ftp->cwd("$VARFTP_dir"); + if ( ($FTPpersistent > 0) && ($transfered_files > 1) ) + { + if($DBX){print STDERR "FTP PERSISTENT, skipping login\n";} + if ($NODATEDIR < 1) + { + $ftp->cwd("../"); + } + } + else + { + $ftp = Net::FTP->new("$VARFTP_host", Port => $VARFTP_port, Debug => $FTPdb); + $ftp->login("$VARFTP_user","$VARFTP_pass"); + $ftp->cwd("$VARFTP_dir"); + } if ($NODATEDIR < 1) { $ftp->mkdir("$start_date"); @@ -408,7 +434,10 @@ foreach(@FILES) } $ftp->binary(); $ftp->put("$dir2/$ALLfile", "$ALLfile"); - $ftp->quit; + if ($FTPpersistent < 1) + { + $ftp->quit; + } $stmtA = "UPDATE recording_log set location='$VARHTTP_path/$start_date_PATH$ALLfile' where recording_id='$recording_id';"; if($DB){print STDERR "\n|$stmtA|\n";} diff --git a/bin/AST_CRON_audio_4_ftp2.pl b/bin/AST_CRON_audio_4_ftp2.pl index 30a9bb5b..76518f07 100644 --- a/bin/AST_CRON_audio_4_ftp2.pl +++ b/bin/AST_CRON_audio_4_ftp2.pl @@ -31,6 +31,7 @@ # # 91123-0005 - First Build # 110524-1052 - Added run-check concurrency check option +# 111128-1617 - Added Ftp persistence option # ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); @@ -55,6 +56,7 @@ $VARHTTP_path = 'http://10.0.0.4'; $file_limit = 1000; $list_limit = 1000; +$FTPpersistent=0; ### begin parsing run-time options ### if (length($ARGV[0])>1) @@ -72,16 +74,18 @@ if (length($ARGV[0])>1) print " [--help] = this screen\n"; print " [--debug] = debug\n"; print " [--debugX] = super debug\n"; + print " [--test] = test\n"; print " [--run-check] = concurrency check, die if another instance is running\n"; print " [--transfer-limit=XXX] = number of files to transfer before exiting\n"; print " [--list-limit=XXX] = number of files to list in the directory before moving on\n"; + print " [--debugX] = super debug\n"; + print " [--nodatedir] = do not put into dated directories\n\n"; print " [--ftp-server=XXX] = FTP server\n"; print " [--ftp-login=XXX] = FTP server login account\n"; print " [--ftp-pass=XXX] = FTP server password\n"; print " [--ftp-dir=XXX] = FTP server directory\n"; - print " [--debugX] = super debug\n"; - print " [--test] = test\n"; - print " [--nodatedir] = do not put into dated directories\n\n"; + print " [--ftp-persistent] = Does not log out between every file transmission\n"; + print "\n"; exit; } else @@ -161,6 +165,12 @@ if (length($ARGV[0])>1) if ($DB > 0) {print "\n----- FTP DIRECTORY: $VARFTP_dir -----\n\n";} } + if ($args =~ /--ftp-persistent/i) + { + $FTPpersistent=1; + if ($DB > 0) + {print "\n----- FTP PERSISTENT: $FTPpersistent -----\n\n";} + } } } else @@ -321,8 +331,13 @@ foreach(@FILES) if ($DB) {print "|$recording_id|$start_date|$ALLfile| |$SQLfile|\n";} ### BEGIN Remote file transfer - $p = Net::Ping->new(); - $ping_good = $p->ping("$VARFTP_host"); + if ( ($FTPpersistent > 0) && ($ping_good > 0) ) + {$ping_good=1;} + else + { + $p = Net::Ping->new(); + $ping_good = $p->ping("$VARFTP_host"); + } if (!$ping_good) { @@ -337,9 +352,20 @@ foreach(@FILES) $start_date_PATH=''; $FTPdb=0; if ($DBX>0) {$FTPdb=1;} - $ftp = Net::FTP->new("$VARFTP_host", Port => $VARFTP_port, Debug => $FTPdb); - $ftp->login("$VARFTP_user","$VARFTP_pass"); - $ftp->cwd("$VARFTP_dir"); + if ( ($FTPpersistent > 0) && ($transfered_files > 1) ) + { + if($DBX){print STDERR "FTP PERSISTENT, skipping login\n";} + if ($NODATEDIR < 1) + { + $ftp->cwd("../"); + } + } + else + { + $ftp = Net::FTP->new("$VARFTP_host", Port => $VARFTP_port, Debug => $FTPdb); + $ftp->login("$VARFTP_user","$VARFTP_pass"); + $ftp->cwd("$VARFTP_dir"); + } if ($NODATEDIR < 1) { $ftp->mkdir("$start_date"); @@ -348,7 +374,10 @@ foreach(@FILES) } $ftp->binary(); $ftp->put("$dir2/$ALLfile", "$ALLfile"); - $ftp->quit; + if ($FTPpersistent < 1) + { + $ftp->quit; + } # FTP2 scripts do not alter the URL of the recording # $stmtA = "UPDATE recording_log set location='$VARHTTP_path/$start_date_PATH$ALLfile' where recording_id='$recording_id';";