シェルスクリプトでftpの呼び出しを自動化したい。入力した場合
$ftp somehost.domain.com
ユーザー名とパスワードの入力を求められます。そのユーザー名とパスワードをftpの呼び出しの一部として提供したいと思います。 ftpの man page には、ftpプロンプトでユーザーコマンドを発行できると書かれていますが、一度にすべてのFTPにログインしたいと思います。それは可能ですか? FTPのフラグに何も表示されません。 -sオプションを使用すると、ftpプロンプトが表示されたらいくつかのftpコマンドを指定するオプションが表示されますが、プロンプトにアクセスするにはユーザー名を指定する必要があります...
使う .netrc
ホームディレクトリのファイル。
内容は次のとおりです。
# machine <hostname> login <username> password <password>
machine ftp.example.com login myuser password $ecret
これがプログラムで行う場合は、.netrc
接続する前に、完了したら削除してください。
here doc を使用してcシェルスクリプトを作成することもできます。これは次のようになります。
#!/bin/sh
Host='someftpserver.com'
USER='username'
PASSWD='password'
FILES='*.txt'
#
ftp -nv $Host>$FTPLOG <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd somedirectory
binary
mget $FILES
quit
END_SCRIPT
必要に応じて、代替としてwput
またはwget
を検討することもできます。
最近wget
を使用していませんが、以前の回答で提案されているようにファイルを作成または変更したくなかったため、wput
を使用しました。
wput
の構文は次のとおりです。
wput <filename> ftp://<username>:<password>@<address>