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

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

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

$ ftp -u ftp://user:secret@ftp.example.com my-local-file.txt
ftp: Invalid URL `ftp://'
17
задан yegor256
05.03.2023 0:58 Количество просмотров материала 3568
Распечатать страницу

10 ответов

вот один подход:

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

альтернативно, создайте (или отредактируйте)~/.netrc файл в домашнем каталоге пользователя, который будет выполнять команду ftp, дать ему соответствующие 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
162
отвечен Marty 2023-03-06 08:46

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

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

ftp-upload -h {HOST} -u {USERNAME} --password {PASSWORD} -d {SERVER_DIRECTORY} {FILE_TO_UPLOAD}
13
отвечен Floris 2023-03-06 11:03

вам нужно исправить url, указанный в вашем заявлении. Вы получили сообщение об ошибке, потому что URL - адрес был неполным-в нем отсутствовало имя загружаемого объекта. После добавления имени файла после example.com как я сделал ниже, вы увидите одну команду действительно работает, как задумано.

попробуйте это:

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

5
отвечен Paul 2023-03-06 13:20

установить 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 2023-03-06 15:37

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

вот пример:

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

здесь дополнительные детали

.

2
отвечен divinedragon 2023-03-06 17:54

Загрузить файл в удаленное место через командную строку

#!/bin/bash
# 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 2023-03-06 20:11

Я использую 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 2023-03-06 22:28

вы также можете использовать sftp или ftp команду

sftp {user}@{IP}

Password:

put {path To File On Local Computer}

0
отвечен iProgram 2023-03-07 00:45

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

[ftp_example_1.sh]

$ dump_file ftp_example_sh.sh

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

[ftp_example_2.sh]

dump_file ftp_example_2.sh $192.168.0.10

ftp -n <<EOF
open 
user anonymous aaa
binary
put 
EOF
0
отвечен sailfish009 2023-03-07 03:02
FtpPut(){
    echo `echo -e "open host\nuser user pass\nbinary\nput \nquit"|ftp -nv`
}
FtpPut asd.txt
FtpPut asd.mp4
FtpPut asd.php
...
-1
отвечен Yöncü Bilişim Çözümleri 2023-03-07 05:19

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх