Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
ncftpspooler(1) 	     General Commands Manual		 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 ncftp-
     batch 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  ear-
     liest  the job should be processed, and optionally some additional informa-
     tion 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 permission on the local files
     that will be uploaded (and directory access permission the parent	directo-
     ries).   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 se-
     quence number or process ID.  This makes it easier  to  create  unique  job
     file  names.   Here  is  the same example, 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 values 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 pas-
	     sive, 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  successfully  transferring	the  file to the destination ma-
	     chine.  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  automatically	generating job files.  As an example, when using
	     the -bbb flag with ncftpput, 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  com-
	     mands 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 con-
	     tain any command-line arguments -- if you want to do that, create a
	     shell script and have it run your program with the command-line ar-
	     guments 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 com-
     pleted.

     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  be-
     tween 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  soft-
     ware.   Additionally,  even if the functionality 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-download 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)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ncftpspooler&sektion=1&manpath=FreeBSD+Ports+15.1.quarterly>

home | help