FTP Commands

The ftp command that runs on a Mac is similar to that from any other platform, including Windows – and not much has changed with regard to FTP for a long, long time. When using FTP you will login to an FTP server, then issue some commands, one of which will kill your session to the host. The commands you issue during an FTP session are issued in an interactive mode of the shell, where you are actually running them against the target server

Notice the similarity between FTP commands and Mac OS X commands! This continues into repetition: in Mac OS X you can build commands to run automatically when you open a new shell. Using a netrc file you can do the same with opening an FTP session. The ~/.netrc file (or just netrc) is a text file that, like .bash_profile, lives in your home directory (aka – ~). The .netrc file allows FTP to perform automatic logins to FTP servers based on the name (not that there aren’t subcommands to do the same, but it allows you not to insert the password into your history or script).

Like .bash_profile, the .netrc will need to be created per user, which can be done with the following:

touch .netrc

Because you’re going to put password information in there, let’s also restrict who can look at it:

chmod 700 .netrc

Now open your shiny new .netrc file and create a block of settings for each FTP
server you want to automate access for. This information will be the ftp server (machine), the username (login) and the password (yup, that’s the password). For example, the entire file could be:

machine krypted.com
login ftpkrypted
password kryptedsupersecrethax0rpassword

You can also connect to a server using the following format with each command with each command:

ftp://username:password@servername:port

Now that you can login without issue, let’s write a script to perform some routine tasks, such as keeping a web site up-to-date.

#!/bin/bash
ftp -d krypted.com << ftpEnd
prompt
cd /Library/WebServer/Documents
put “*.html”
put “*.php”
cd /Library/WebServer/Documents
put “*.png”
quit
ftpEnd

Or Downloading documents off of a website:

#!/bin/bash
ftp -d krypted.com << ftpEnd
prompt
cd /My/Documents
get “*.doc”
quit
ftpEnd

There are also some variables that you can use in the prompt:

Finally, you can also define macro’s in your .netrc file using macdef.

Leave a Reply