Beefy Boxes and Bandwidth Generously Provided by pair Networks
No such thing as a small change
 
PerlMonks  

comment on

( [id://3333]=superdoc: print w/replies, xml ) Need Help??

Greetings Good people..!

I'm a beginner who just joined this community with lots of hopes. With much attempt I've written a script whcih does the following.

1. Will create a directory under “/x01/xx/xx/xx” by the current date, in the format of “YYYYMMDD” if it has not already been created. i.e: if the script is run on “01st of jan 2013”, the directory “20130101” will be created under the said path. So whenever there is a need to inspect the logs always look for a directory by the current date. i.e: if the script is run on “01st of jan 2013”, the directory “20130101” will be created under the said path. So whenever there is a need to inspect the logs always look for a directory by the current date.

2. Check if the log file(s) have already been downloaded earlier within the same day, and if not log(s) will be downloaded to the TODAY’s directory.

As you see on the subroutine "get_LOGS" I'm terminating the script if there are no files can be found on the server. Can someone go through the script and let me know what I should do to return a message saying that there are no files in the server? For an instance if I specify 2 or more files to be downloaded that are not really on the remote share, it would just complain about the first file and exit.(I know this is because of the die function, its just that I have no idea how to address such a scenario

Usage of the script: abc_logs.pl <file1> <file2>..file(n)

)
use Net::SFTP::Foreign; use Cwd; my $LOGS_LOCAL_PATH = "/x02/ABC/abc/"; chomp $LOGS_LOCAL_PATH; my $LOGS_REM_PATH = "/x01/INT/ABC/vim/"; chomp $LOGS_REM_PATH; my $TODAY = `date +%Y%m%d`; chomp $TODAY; my @GETLOOP = @ARGV; unless ($#ARGV >= 0) { print "\nUsage: gtp_logs.pl <file1> <file2> <file3>.....<file(n)>\n\n +"; exit; } system("clear"); unless ( -d "$LOGS_LOCAL_PATH"."$TODAY") { print "Directory \"$TODAY\" doesn't exist. So creating the dir +ectory..!\n"; print "OK..Done.....!\n\n"; system("mkdir $LOGS_LOCAL_PATH/$TODAY"); } else { print "Directory already exists. Logs will be downloaded to == +> \"$LOGS_LOCAL_PATH$TODAY\".....!\n\n"; } # if_DOWNLOADED($LOGS_LOCAL_PATH,$TODAY,@GETLOOP); chdir("$LOGS_LOCAL_PATH"."$TODAY") || die "cannot cd to ($!)"; foreach my $GETL (@GETLOOP) { my $is_downloaded = if_DOWNLOADED($LOGS_LOCAL_PATH,$TODAY,$GETL); if(!$is_downloaded) { get_LOGS("172.25.70.221","abc","abc1234321","/x01/INT/abc/vim" +,$GETL); print "File \"$GETL\" downloaded to ==> \"$LOGS_LOCAL +_PATH$TODAY\"\n\n"; } else { print "File \"$GETL\" has already been Downloaded to ==> + \"$LOGS_LOCAL_PATH$TODAY\"\n\n"; } } sub get_LOGS { my $LOG_HOST = shift; my $REM_USER = shift; my $REM_PASSW = shift; my $REM_PATH = shift; my $REM_FILE = shift; print "Connecting to the sftp share! Please wait....!\n"; my $sftp = Net::SFTP::Foreign->new($LOG_HOST, user => $REM_USE +R, password => $REM_PASSW); $sftp->setcwd($REM_PATH) or die "unable to change cwd: " . $sf +tp->error; print "OK. On the share! Downloading the file \"$REM_FILE\"... +................!\n\n\n\n"; $sftp->error and die "Problem connecting to the share...!!!! " + . $sftp->error; $sftp->get($REM_FILE) or die "File does not seem to be present + on the remote share. Please re-request..!!!" . $sftp->error; return $REM_FILE; } sub if_DOWNLOADED { my $DWD_FILE_PATH = shift; my $DWD_DIR = shift; my $DWD_FILE = shift; if (-e "$DWD_FILE_PATH/$DWD_DIR/$DWD_FILE") { return 1; } else { return 0; }

PLease help out gentlemen. This will solve lots of other doubgts that I have when it comes to perl subroutines.

/Bindo


In reply to Perl sftp behavior when there are no files in the share by Bindo

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post; it's "PerlMonks-approved HTML":



  • Are you posting in the right place? Check out Where do I post X? to know for sure.
  • Posts may use any of the Perl Monks Approved HTML tags. Currently these include the following:
    <code> <a> <b> <big> <blockquote> <br /> <dd> <dl> <dt> <em> <font> <h1> <h2> <h3> <h4> <h5> <h6> <hr /> <i> <li> <nbsp> <ol> <p> <small> <strike> <strong> <sub> <sup> <table> <td> <th> <tr> <tt> <u> <ul>
  • Snippets of code should be wrapped in <code> tags not <pre> tags. In fact, <pre> tags should generally be avoided. If they must be used, extreme care should be taken to ensure that their contents do not have long lines (<70 chars), in order to prevent horizontal scrolling (and possible janitor intervention).
  • Want more info? How to link or How to display code and escape characters are good places to start.
Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others learning in the Monastery: (5)
As of 2024-03-28 21:01 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found