コマンドラインからFTP経由でファイルをアップロードする必要があります。この情報は、URL、ユーザー名、パスワード、ポート、およびパッシブモードを使用することになっているという事実です。
この情報を指定してファイルをアップロードするにはどうすればよいですか?
これはスクリプトから行う必要があるため、この情報を自動的に入力できるようにする必要があることに注意してください。
そこには多くのCLI(コマンドライン)クライアントがあります。最も一般的なのは単にftp
です。 <Host>
、<port>
、<username>
、<pass>
および "パッシブモード"。 ftp
を使用して、次のことを行う必要があります。
ftp -p <Host> <port>
-p
スイッチは、「パッシブモードを使用する」ことを意味します。次に、ユーザー名とパスワードを尋ねられます。ログインに成功すると(サーバーから通知されます)、いくつかのコマンドを実行できます。 help
と入力してEnterキーを押すと、使用可能なコマンドのリストが表示されます。たとえば、 cd
、ls
、mkdir
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サーバーへのアクセスにも使用できます。
これで問題ありません。 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