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

Как загрузить один файл по FTP из командной строки?

Мне нужно загрузить один файл на FTP-сервер из Ubuntu. Эта операция должна быть выполнена в скрипте (в неинтерактивном режиме). Каков правильный синтаксис для ftp?

Я пытаюсь это сделать, безрезультатно:

$ ftp -u ftp://user:secret@ftp.example.com my-local-file.txt
ftp: Invalid URL `ftp://'
```.

Ответы (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
  • *

Или создайте (или отредактируйте) ~/. netrc файл в домашнем каталоге пользователя, который выполнит команду ftp, сделает соответствующую завивку (chmod 0600 ~/.netrc) и добавит следующее:

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

Затем опустите информацию для входа, как в:

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

Также, вот как вы можете сделать то же самое, используя curl:

&00001

18
18
18
2015-01-27 15:52:13 +0000

Я могу порекомендовать ftp-upload. Это аккуратный маленький инструмент, который можно установить под ubuntu через sudo apt-get install ftp-upload.

Пример использования:

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’, как я сделаю это ниже, вы увидите, что единственная команда действительно работает, как вы и предполагали.

Попробуйте следующее:

ftp -u ftp://user:secret@ftp.example.com/my-local-file.txt my-local-file.txt

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

Вы также можете попробовать lftp.

Вот пример:

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, который поставляется вместе с ним, практически что-то вроде этого синтаксиса:

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

Вы даже можете проверить, если состояние загрузки хорошее или плохое. Обычный ftp клиент также может быть использован вместе с ожиданием.

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

Я улучшил ответ Марти, как указано ниже (включая двоичный):

[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
-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
6