ncftpspooler(1) - phpMan

Command: man perldoc info search(apropos)  


ncftpspooler(1)                                                                   ncftpspooler(1)



NAME
       ncftpspooler - Global batch FTP job processor daemon

SYNOPSIS
       ncftpspooler -d [options]

       ncftpspooler -l [options]

OPTIONS
   Command line flags:
       -d      Begin background processing of FTP jobs in the designated FTP job queue directory.

       -q XX   Use this option to specify a directory to use as the FTP job queue instead of  the
               default directory, /var/spool/ncftp.

       -o XX   Use  this  option  to specify a filename to use as the log file.  By default, (and
               rather inappropriately) the program simply uses a file called log in the job queue
               directory.  If you don't want a log, use this option to specify /dev/null.

       -l      Lists the contents of the job queue directory.

       -s XX   When  the job queue is empty, the program sleeps 120 seconds and then checks again
               to see if a new job has been submitted.  Use this option to change the  number  of
               seconds used for this delay.

DESCRIPTION
       The  ncftpspooler program evolved from the ncftpbatch program.  The ncftpbatch program was
       originally designed as a ``personal FTP spooler'' which would process a single  background
       job  a  particular  user and exit when it finished; the ncftpspooler program is a ``global
       FTP spooler'' which stays running and processes background jobs as they are submitted.

       The job queue directory is monitored for specially-named and formatted text  files.   Each
       file  serves  as  a single FTP job.  The name of the job file contains the type of FTP job
       (get or put), a timestamp indicating the earliest the job should be processed, and option-
       ally  some  additional  information  to  make it easier to create unique job files (i.e. a
       sequence number).  The contents of the job files  have  information  such  as  the  remote
       server machine to FTP to, username, password, remote pathname, etc.

       Your  job  queue  directory must be readable and writable by the user that you plan to run
       ncftpspooler as, so that jobs can be removed or renamed within the queue.

       More importantly, the user that is running the program will need  adequate  privileges  to
       access the local files that are involved in the FTPing.  I.e., if your spooler is going to
       be processing jobs which upload files to remote servers, then the user will need read per-
       mission on the local files that will be uploaded (and directory access permission the par-
       ent directories).  Likewise, if your spooler is going to be processing jobs which download
       files, then the user would need to be able to write to the local directories.

       Once  you  have  created your spool directory with appropriate permissions and ownerships,
       you can run ncftpspooler -d to launch the spooler daemon.  You can run additional spoolers
       if you want to process more than FTP job from the same job queue directory simultaneously.
       You can then monitor the log file (i.e., using tail -f ) to  track  the  progress  of  the
       spooler.   Most  of the time it won't be doing anything, unless job files have appeared in
       the job queue directory.

JOB FILE NAMES
       When the ncftpspooler program monitors the job queue directory, it ignores any files  that
       do  not follow the naming convention for job files.  The job files must be prefixed in the
       format of X-YYYYMMDD-hhmmss where X denotes a job type, YYYY is the four-digit year, MM is
       the two-digit month number, DD is the two-digit day of the month, hh is the two-digit hour
       of the day (00-23), mm is the two-digit minute, and ss is the two-digit second.  The  date
       and time represent the earliest time you want the job to be run.

       The  job  type  can  be g for a get (download from remote host), or p for  aput (upload to
       remote host).

       As an example, if you wanted to schedule an upload to occur at 11:45  PM  on  December  7,
       2001, a job file could be named

           p-20011207-234500

       In  practice,  the  job  files include additional information such as a sequence number or
       process ID.  This makes it easier to create unique job file names.  Here is the same exam-
       ple, with a process ID and a sequence number:

           p-20011207-234500-1234-2

       When  submitting  job  files to the queue directory, be sure to use a dash character after
       the hhmmss field if you choose to append any additional data to the job file name.

JOB FILE CONTENTS
       Job files are ordinary text files, so that they can be created by hand.  Each line of  the
       file  is  a  key-pair in the format variable=value, or is a comment line beginning with an
       octothorpe character (#), or is a blank line.  Here is an example job file:

           # This is a NcFTP spool file entry.
           job-name=g-20011016-100656-008299-1
           op=get
           hostname=ftp.freebsd.org
           xtype=I
           passive=1
           remote-dir=pub/FreeBSD
           local-dir=/tmp
           remote-file=README.TXT
           local-file=readme.txt

       Job files are flexible since they follow an  easy-to-use  format  and  do  not  have  many
       requirements, but there are a few mandatory parameters that must appear for the spooler to
       be able to process the job.

       op      The operation (job type) to perform.  Valid values are get and put.

       hostname
               The remote host to FTP to.  This may  be  an  IP  address  or  a  DNS  name  (i.e.
               ftp.example.com).

       For a regular get job, these parameters are required:

       remote-file
               The pathname of the file to download from the remote server.

       local-file
               The pathname to use on the local server for the downloaded file.

       For a regular put job, these parameters are required:

       local-file
               The pathname of the file to upload to the remote server.

       remote-file
               The pathname to use on the remote server for the uploaded file.

       For a recursive get job, these parameters are required:

       remote-file
               The pathname of the file or directory to download from the remote server.

       local-dir
               The directory pathname to use on the local server to contain the downloaded items.

       For a recursive put job, these parameters are required:

       local-file
               The pathname of the file or directory to upload to the remote server.

       remote-dir
               The directory pathname to use on the remote server to contain the uploaded  items.

       The  rest  of  the  parameters  are  optional.  The spooler will attempt to use reasonable
       defaults for these parameters if necessary.

       user    The username to use to login to the remote server.  Defaults to ``anonymous''  for
               guest access.

       pass    The  password  to  use  in  conjunction  with  the username to login to the remote
               server.

       acct    The account to use in conjunction with the username to login to the remote server.
               The need to specify this parameter is extremely rare.

       port    The  port  number to use in conjunction with the remote hostname to connect to the
               remote server.  Defaults to the standard FTP port number, 21.

       host-ip The IP address to use in conjunction with the remote hostname to  connect  to  the
               remote server.  This parameter can be used in place of the hostname parameter, but
               one or the other must be used.  This parameter is commonly included along with the
               hostname parameter as supplemental information.

       xtype   The  transfer type to use.  Defaults to binary transfer type (TYPE I).  Valid val-
               ues are I for binary, A for ASCII text.

       passive Whether to use FTP passive data connections (PASV) or FTP active data  connections
               (PORT).   Valid  values are 0 for active, 1 for passive, or 2 to try passive, then
               fallback to active.  The default is 2.

       recursive
               This can be used to transfer entire directory trees.  By default,  only  a  single
               file is transferred.  Valid values are yes or no.

       delete  This  can  be  used to delete the source file on the source machine after success-
               fully transferring the file to the destination machine.  By default, source  files
               are not deleted.  Valid values are yes or no.

       job-name
               This  isn't  used  by the program, but can be used by an entity which is automati-
               cally generating job files.  As an example, when using the -bbb flag  with  ncftp-
               put,  it  creates a job file on stdout with a job-name parameter so you can easily
               copy the file to the job queue directory with the suggested job name  as  the  job
               file name.

       pre-ftp-command

       post-ftp-command
               These  parameters  correspond  to the -W, and -Y options of ncftpget and ncftpput.
               It is important to note that these refer to RFC959 File Transfer Protocol commands
               and not shell commands, nor commands used from within /usr/bin/ftp or ncftp.

       pre-shell-command

       post-shell-command
               These  parameters  provide  hooks  so you can run a custom program when an item is
               processed by the spooler.  Valid values are pathnames  to  scripts  or  executable
               programs.   Note  that the value must not contain any command-line arguments -- if
               you want to do that, create a shell script and have it run your program  with  the
               command-line arguments it requires.

       Generally speaking, post-shell-command is much more useful than pre-shell-command since if
       you need to use these options you're more likely to want to do  something  after  the  FTP
       transfer  has  completed  rather  than before.  For example, you might want to run a shell
       script which pages an administrator to notify her that her 37 gigabyte file  download  has
       completed.

       When  your  custom  program  is run, it receives on standard input the contents of the job
       file (i.e. several lines of variable=value key-pairs), as  well  as  additional  data  the
       spooler  may  provide,  such  as a result key-pair with a textual description of the job's
       completion status.

       post-shell-command update a log file named /var/log/ncftp_spooler.

           #!/usr/bin/perl -w

           my ($line);
           my (%params) = ();

           while (defined($line = <STDIN>)) {
                $params{$1} = $2
                     if ($line =~ /^([^=\#\s]+)=(.*)/);
           }

           if ((defined($params{"result"})) &&
             ($params{"result"} =~ /^Succeeded/))
           {
                open(LOG, ">> /var/log/ncftp_spooler.log")
                     or exit(1);
                print LOG "DOWNLOAD" if ($params{"op"} eq "get");
                print LOG "UPLOAD" if ($params{"op"} eq "put");
                print LOG " ", $params{"local-file"}, "\n";
                close(LOG);
           }

DIAGNOSTICS
       The log file should be examined to determine if any ncftpspooler  processes  are  actively
       working  on  jobs.   The log contains copious amounts of useful information, including the
       entire FTP control connection conversation between the FTP client and server.

BUGS
       The recursive option may not be reliable since ncftpspooler depends on functionality which
       may  or may not be present in the remote server software.  Additionally, even if the func-
       tionality is available, ncftpspooler may need to use heuristics which cannot be considered
       100% accurate.  Therefore it is best to create individual jobs for each file in the direc-
       tory tree, rather than a single recursive directory job.

       For resumption of downloads to work, the remote server must support the FTP SIZE and  MDTM
       primitives.   Most modern FTP server software can do this, but there are still a number of
       bare-bones ftpd implementations which do not.  In these cases, ncftpspooler will  re-down-
       load the file in entirety each time until the download succeeds.

       The  program  needs  to  be improved to detect jobs that have no chance of ever completing
       successfully.  There are still a number of cases  where  jobs  can  get  spooled  but  get
       retried over and over again until a vigilant sysadmin manually removes the jobs.

       The  spool  files  may  contain  usernames and passwords stored in cleartext.  These files
       should not be readable by any user except the user running the program!

AUTHOR
       Mike Gleason, NcFTP Software (http://www.ncftp.com).

SEE ALSO
       ncftpbatch(1), ncftp(1), ncftpput(1), ncftpget(1), uucp(1).



ncftpspooler                              NcFTP Software                          ncftpspooler(1)

Generated by $Id: phpMan.php,v 4.49 2006/02/26 13:18:18 chedong Exp $ Author: Che Dong
On Apache
Under GNU General Public License
2012-05-26 03:08 @38.107.179.239 Crawled by CCBot/1.0 (+http://www.commoncrawl.org/bot.html)
Valid XHTML 1.0!Valid CSS!