web-dev-qa-db-ja.com

Linuxコマンドラインを介してFTPに接続する

コマンドラインからFTP経由でファイルをアップロードする必要があります。この情報は、URL、ユーザー名、パスワード、ポート、およびパッシブモードを使用することになっているという事実です。

この情報を指定してファイルをアップロードするにはどうすればよいですか?

これはスクリプトから行う必要があるため、この情報を自動的に入力できるようにする必要があることに注意してください。

6
skline

そこには多くのCLI(コマンドライン)クライアントがあります。最も一般的なのは単にftpです。 <Host><port><username><pass>および "パッシブモード"。 ftpを使用して、次のことを行う必要があります。

ftp -p <Host> <port>

-pスイッチは、「パッシブモードを使用する」ことを意味します。次に、ユーザー名とパスワードを尋ねられます。ログインに成功すると(サーバーから通知されます)、いくつかのコマンドを実行できます。 helpと入力してEnterキーを押すと、使用可能なコマンドのリストが表示されます。たとえば、 cdlsmkdir ftpコマンドを使用して(サーバー上の)作業ディレクトリを変更し、その内容を一覧表示して新しいディレクトリを作成します。 ftpを実行する前に、送信するファイルと同じディレクトリにいた場合は、putまたはmputコマンドを使用して実際の転送を開始できます。最初のコマンドは、グロビングを使用して1つのファイルを送信し、次に複数のファイルを送信します(例:mput *pdfは、現在のディレクトリにあるすべてのPDFファイルを送信します)。コマンドに関する簡単なヘルプを取得するには、help <command>ftpアプリ内から。初心者にはそれで十分だと思います。残りはman ftpまたはinfo ftp。 FTPセッションを終了するには、byeと入力します。これを行う方法は他にもありますが、これはエレガントな方法だと思います:)。

他のクライアントについては、いくつかの興味深い選択肢がここで指摘されましたが、私はlftpを個人的に使用しています。それは、しっかりした、良い、柔軟性があり、使いやすいFTPクライアントです。コマンドラインの下でより視覚的なアプローチを好む場合は、mcまたは「Midnight Command」を使用できます。これは、Norton Commanderパラダイムを利用する一般的なアプリケーションファイルマネージャーですが、ftpサーバーへのアクセスにも使用できます。

9
thebodzio

ncftpncftpput を強くお勧めします。これは非常にスクリプト可能であり、この種のことには便利です。

3
OneOfOne

これで問題ありません。 Gist には多くの例があります。そのサイトにアクセスして「FTPスクリプト」を検索してください。

これが私が見つけたものです:

#!/bin/sh

Host='some.ftp.server'
USER='myuser'
PASSWD='mypass'
FILE='myfile'

ftp -n $Host <<END_SCRIPT
user ${USER} ${PASSWD}
cd /path/to/something
get $FILE
quit
END_SCRIPT

exit 0

また、 Command Line Foo は別の優れたサイトで、ftpっぽいファイル転送のこのクレイジーで素晴らしい例を見つけました。

Create a file server, listening in port 7000:

while true; do nc -l 7000 | tar -xvf -; done

Then, at client side:

tar c myfile | nc localhost 7000 ##Send file myfile to server
tar c mydir | nc localhost 7000 ## Send directory mydir to server
2
djangofan