FTPの転送処理をシェルスクリプトで実行する例です。
まず理解すること
ftpコマンドは標準入力からFTPの内部コマンドを受け取ることができます。
たとえばこんなファイルを用意して、
open 192.168.1.10
user www PASSWORD
cd /var/www/html
ascii
get index.html
ftpコマンドに渡してやれば指定した処理を実行できます(この場合はindex.htmlの取得)。
ftp -n < ftp_cmd.txt
-nはログインプロンプト、.netrc参照を抑止するオプションです。
逆にftpのログインを簡略化する.netrcで書いたように.netrcををうまく使えば、
echo get index.html | ftp
だけでいけるように簡略化することも出来るでしょう。
シェルスクリプトにする
もう少し汎用的なシェルスクリプトとして、
サーバ、アカウント、ファイル名を引数で渡してしてファイルを送信するスクリプトを作ってみます。
./ftp_up.sh sv1 mikeda mikepass sample.jpg
これはヒアドキュメント使うと簡単に出来ます。
#!/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コマンド、変数化する部分を変えればけっこう応用が利きます。
まとめ
ftp転送をシェルスクリプト化する簡単な例でした。
FTP便利ですが、ただ利便性、セキュリティともにSSH(ssh, scp)やそれを使ったrsyncには適わないと思いますのでSSHが使える場合はそっち使いましょう。