2011-08-15 01:40:11 +0000 2011-08-15 01:40:11 +0000
117
117

コマンドラインからFTPで1つのファイルをアップロードする方法を教えてください

UbuntuからFTPサーバーに1つのファイルをアップロードする必要があります。この操作はスクリプト(非対話モード)で行う必要があります。また、この操作はスクリプト(非インタラクティブモード)で行う必要があります。

回答 (10)

188
188
188
2011-08-15 04:39:47 +0000

これは一つの方法です。

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

別の方法としては、ftp コマンドを実行するユーザのホームディレクトリに ~/.netrc ファイルを作成 (または編集) して、適切な perms (chmod 0600 ~/.netrc) を与え、以下を追加します。 netrc ファイルを作成(または編集)し、ftp コマンドを実行するユーザのホームディレクトリに適切な perms (&007) を与え、次のように追加します:

# ~/.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
18
18
18
2015-01-27 15:52:13 +0000

私はftp-uploadをお勧めできます。これは、sudo apt-get install ftp-uploadを介してubuntuにインストールすることができるきちんとした小さなツールです。

使用例:

ftp-upload -h {HOST} -u {USERNAME} --password {PASSWORD} -d {SERVER_DIRECTORY} {FILE_TO_UPLOAD}
5
5
5
2011-12-02 19:59:23 +0000

ステートメントで指定されたURLを修正する必要があります。URLが不完全で、アップロードするオブジェクトの名前がないためにエラーが発生しました。下記のように'example.com'の後にファイル名を追加すると、単一のコマンドが意図した通りに動作することがわかります。

4
4
4
2013-01-10 09:06:56 +0000

ここに例があります:

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

詳細

についてはこちらを参照してください。

4
4
4
2011-08-15 04:37:46 +0000

ncftp をインストールして、付属の ncftpput ツールを使用してください。通常の ftp クライアントも expect と一緒に使うことができます。

2
2
2
2015-04-29 07:48:35 +0000

コマンドラインでファイルを遠隔地にアップロードする

#!/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
1
1
1
2015-02-16 17:47:05 +0000

私は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もよく効きます。

0
0
0
2015-02-16 19:37:53 +0000

sftp や ftp コマンド

sftp {user}@{IP} Password: put {path To File On Local Computer} &007 を使うこともできます。

0
0
0
2017-07-31 02:59:52 +0000

I improved Marty answer like below (include binary):

[ftp_example_1.sh.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

&001

-1
-1
-1
2017-08-25 18:06:21 +0000
FtpPut(){
    echo `echo -e "open host\nuser user pass\nbinary\nput $1\nquit"|ftp -nv`
}
FtpPut asd.txt
FtpPut asd.mp4
FtpPut asd.php
...

関連する質問

6
10
5
37
8