web-dev-qa-db-ja.com

コマンドラインから1ファイルをFTPでアップグレードするにはどうすればいいですか?

UbuntuからFTPサーバーに単一のファイルをアップロードする必要があります。この操作はスクリプトで(非対話モードで)行わなければなりません。 ftpの正しい構文は何ですか?

私はこれを試していますが、役に立ちません。

$ ftp -u ftp://user:[email protected] my-local-file.txt
ftp: Invalid URL `ftp://'
109
yegor256

これが一つのアプローチです:

$ ftp -n <<EOF
open ftp.example.com
user user secret
put my-local-file.txt
EOF

あるいは、ftpコマンドを実行するユーザーのホームディレクトリに〜/ .netrcファイルを作成(または編集)し、適切なperms(chmod 0600 ~/.netrc)を付けて、以下を追加します。

# ~/.netrc
machine ftp.example.com
login user
password secret

次に、ログイン情報を省略します。

$ echo put my-local-file.txt | ftp ftp.example.com

また、curlを使って同じことをする方法もあります。

$ curl -T my-local-file.txt ftp://ftp.example.com --user user:secret
174
Marty

私はftp-uploadを推薦できます。それはあなたがSudo apt-get install ftp-uploadを通してubuntuの下でインストールすることができることをきちんと小さなツールです。

使用例

ftp-upload -h {Host} -u {USERNAME} --password {PASSWORD} -d {SERVER_DIRECTORY} {FILE_TO_UPLOAD}
14
Floris

あなたはあなたのステートメントで与えられたURLを修正する必要があります。 URLが不完全なため、エラーを受け取りました - アップロードしようとしているオブジェクトの名前が見つかりませんでした。下記のように 'example.com'の後にファイル名を追加すると、単一のコマンドが実際に意図したとおりに機能することがわかります。

これを試して:

ftp -u ftp://user:[email protected]/my-local-file.txt my-local-file.txt

5
Paul

Ncftpをインストールして、それに付随するncftpputツールを使ってください。

ncftpput -u ftpuser -p ftppass ftphostname /path/where/to/upload localfile.name
if [ $? -ne 0 ]; then echo "Upload failed"; fi

アップロードのステータスが良いか悪いかを確認することもできます。通常のftpクライアントもexpectと共に使用できます。

4
O G

lftpも試すことができます。

これが一例です。

lftp -e 'cd folder1/folder2; put /home/path/yourfile.tar; bye' -u user,password ftp.theserver.com

詳細はこちら を参照してください。

2
divinedragon

コマンドラインからファイルをリモートの場所にアップロードする

#!/bin/bash
#$1 is the file name
#usage:this_script <filename>
Host='yourhost'
USER="youruser"
PASSWD="pass"
FILE="abc.php"
REMOTEPATH='/html'

ftp -n $Host <<END_SCRIPT
quote USER $USER
quote PASS $PASSWD
cd $REMOTEPATH
put $FILE 
quit
END_SCRIPT
exit 0
2
Shal

これを行うには、BusyBoxのftpputを使用します。

# /bin/busybox ftpput

BusyBox v1.20.2 (Debian 1:1.20.0-7) multi-call binary.

Usage: ftpput [OPTIONS] Host [REMOTE_FILE] LOCAL_FILE

Upload a file to a FTP server

    -v,--verbose            Verbose
    -u,--username USER      Username
    -p,--password PASS      Password
    -P,--port NUM           Port

注:busybox ftpgetもうまく機能します。

1
Naskel

私は以下のようにMartyの答えを改良しました(バイナリを含む):

[ftp_example_1.sh]

$ ftp_example_sh.sh dump_file

ftp -n <<EOF
open 192.168.0.10
user anonymous aaa
binary
put $1
EOF

[ftp_example_2.sh]

$ ftp_example_2.sh 192.168.0.10 dump_file

ftp -n <<EOF
open $1
user anonymous aaa
binary
put $2
EOF
0
sailfish009

Sftpまたはftpコマンドを使うこともできます

sftp {user}@{IP}
Password:
put {path To File On Local Computer}

0
iProgram