読者です 読者をやめる 読者になる 読者になる

ftp転送をシェルスクリプトで

シェルスクリプト Linux

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コマンド、変数化する部分を変えればけっこう応用が利きます。
ただ利便性、セキュリティともにSSHssh, scp)には適わないと思いますのでSSHが使える場合はそっち使いましょう。