ftpコマンドは標準入力からFTPの内部コマンドを受け取ることができます。
たとえばこんなファイルを用意して、
open 192.168.1.10 user www PASSWORD cd /var/www/html ascii get index.html
ftpコマンドに渡してやれば指定したファイルを取得できます。
$ ftp -n < ftp_cmd.txt
(-nはログインプロンプト、.netrc参照を抑止するオプションです。逆にid:mikeda:20081025で書いたように.netrcををうまく使えば、$ echo get index.html | ftpでもいけます。)
もう少し汎用的なのを作ってみましょう。サーバ、アカウント、ファイル名を指定してファイルを転送します。
$ ./ftp_up.sh sv1 mikeda mikepass sample.jpg
ヒアドキュメント使って1つのスクリプトにまとめちゃえば簡単です。
#!/bin/sh SERVER=$1 USER=$2 PASS=$3 FILE=$4 ftp -n <<END open $SERVER user $USER $PASS cd /tmp binary prompt mput $FILE END
状況によってFTPコマンド、変数化する部分を変えればけっこう応用が利きます。
ただ利便性、セキュリティともにSSH(ssh, scp)には適わないと思いますのでSSHが使える場合はそっち使いましょう。