ITEM: AE3313L

Automate FTP transfer


Question:

I have a cron job that calls a script every night.  The
script is supposed to ftp a few files to a remote host.  I would
like to transfer these files automatically without having to
login.  How can I do this?

Response:  
       
------------------------                                                        
How to write a FTP macro                                                        
------------------------                                                        
                                                                                
FTP (File Transfer Protocol) provides a scripting facility known                
as FTP "macros".  FTP macros are defined in the $HOME/.netrc file.              
In order for FTP to use the $HOME/.netrc file, this file must                   
have read and write permission for the owner, and no other permissions.         
Use the "chmod 600 $HOME/.netrc" command to set the correct                     
permissions.                                                                    
                                                                                
Macros have the following properties:                                           
                                                                                
1 - A macro is associated with the login entry immediately preceeding           
    it, i.e. macros are not global to the $HOME/.netrc file.                    
                                                                                
2 - The $HOME/.netrc file can contain multiple login definitions, and up        
    16 macros per login definition.                                             
                                                                                
3 - If the macro's name is "init" it will be executed automatically upon        
    login.  Other macros can be executed from the FTP prompt (ftp> ) with       
    the syntax "$macro_name".                                                   
                                                                                
The following is an example $HOME/.netrc file, specifying one                   
login definition and one macro.                                                 
                                                                                
=========================================                                       
machine abyss login darin password a1temp                                       
macdef init                                                                     
put /tmp/sampfile                                                               
bye                                                                             
                                                                                
=========================================                                       
                                                                                
In this example, the first line is a login definition, and it                   
has the format:                                                                 
                                                                                
   machine \ login \ password \              
                                                                                
The second through fourth lines constitute a macro definition.  It has          
the format:                                                                     
                                                                                
   macdef \                                                          
   \                                                                
   ...                                                                          
   \                                                                
   \                                                                 
                                                                                
Notice that the macro is terminated by having a blank line after                
the last command.                                                               
                                                                                
The use of the above example $HOME/.netrc file is as follows:                   
                                                                                
1 - At the shell prompt, enter "ftp abyss".                                     
                                                                                
2 - FTP scans the $HOME/.netrc file for a login definition for the host         
    abyss.  FTP uses the login definition to log user darin into abyss.         
                                                                                
3 - FTP scans for the macro named "init" (associated with this login            
    definition) and executes the commands the macro specifies, in this          
    case one put command.            
                                           
============================================
Executing specific macros in the .netrc file
============================================

Here is an example of a .netrc file with many
macros being used:

machine mod590
login user
password getlost
macdef test1
get /etc/motd /tmp/m1
\
macdef test2 
get /etc/motd /tmp/m2
cd
\
macdef test3
get /etc/motd /tmp3
pwd
quit
\< CR >

Each macdef can have ftp subcommands following them.
But there must be a \ carriage return between the
last ftp subcommand and the next macdef.

To execute a specific macro only do the following:

ftp \
ftp> $test1

This will run all the subcommands under the macro test1
in the .netrc file.
 ftp> $test3

This will run all the subcommands under the macro test3 in
the .netrc file.



Support Line: Automate FTP transfer ITEM: AE3313L
Dated: December 1994 Category: N/A
This HTML file was generated 99/06/24~13:30:29
Comments or suggestions? Contact us