ftpコマンドでユーザー名とパスワードを指定する方法は?


9

シェルスクリプトでftpの呼び出しを自動化したい。入力した場合

$ftp somehost.domain.com

ユーザー名とパスワードの入力を求められます。そのユーザー名とパスワードをftpの呼び出しの一部として提供したいと思います。ftp のマニュアルページには、ftpプロンプトでユーザーコマンドを発行できると記載されていますが、一度にすべてのftpにログインしたいと考えています。それは可能ですか?ftpのフラグには何も表示されません。-sオプションを使用すると、ftpプロンプトが表示されたら、いくつかのftpコマンドを指定するオプションが表示されますが、プロンプトを表示するにはユーザー名を指定する必要があります...


expect(ソートのtcl / tk拡張)は、この種のものに理想的なプログラムです。プロンプトを待ちます。応答を与える...答えを待ちます。新しい応答をexpect返します... "ogin:"を待ってユーザー名を送信してから、 "assword:"を待ってパスワードを送信します。
Baard Kopperud、2014

回答:


10

.netrcホームディレクトリのファイルを使用します。

内容は次のとおりです。

# machine <hostname> login <username> password <password>
machine ftp.example.com login myuser password $ecret

これがプログラムで行っていることである場合は、.netrc接続する前に書き込み、完了したら削除してください。


このファイルは特定のものftpですか、それとも他のプログラムによって読み取られますか?
terdon

netrc(5)manページには、それは「のためだと言うftp(1)が、私はそれはわからない」ftp、それを使用する唯一のものです。
バハマ14

あなたはこのコマンドを使用するあなたの「.netrcの」ファイルを検索する場合:locate '.netrc'
goamn

1

また、ヒアドキュメントを使用して、次のようなACシェルスクリプトを作成することもできます。

#!/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

0

ニーズに応じて、wputまたはwget代替案として検討することもできます。

wget最近は使用しwputていませんが、以前の回答で提案されているようにファイルを作成または変更したくないので使用しました。

以下の場合wput、構文は次のとおりです。

wput <filename> ftp://<username>:<password>@<address>
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.