ftp
的正确语法是什么?我正在尝试,但无济于事:
$ ftp -u ftp://user:secret@ftp.example.com my-local-file.txt
ftp: Invalid URL `ftp://'
#1 楼
这是一种方法:或者,在用户的主目录中创建(或编辑)〜/ .netrc文件,该文件将运行ftp命令,给它适当的权限(chmod 0600 ~/.netrc
),然后添加以下内容:$ ftp -n <<EOF
open ftp.example.com
user user secret
put my-local-file.txt
EOF
然后省略登录信息,如:
# ~/.netrc
machine ftp.example.com
login user
password secret
此外,这也是使用curl进行相同操作的方法:
$ echo put my-local-file.txt | ftp ftp.example.com
评论
哇,我不知道curl支持ftp!超级好用。
–塞巴斯蒂安
2013年6月25日在16:25
+1为卷曲解决方案。为什么还要打扰另一个人呢?
– Asaph
13-10-9在20:55
@Asaph因为没有在我需要这样做的地方安装curl,所以其他解决方案派上了用场。谢谢。
– bobef
2014年9月11日上午8:12
+1为卷曲。整洁,干净,直达重点!在Debian / Ubuntu中,“ apt-get install curl”(如果没有)。
–GTodorov
16 Mar 6 '16 at 18:57
卷发解决方案是最好和最简单的
–user512278
16 Mar 28 '16 at 16:40
#2 楼
我可以推荐ftp-upload
。这是一个简洁的小工具,您可以通过sudo apt-get install ftp-upload
在ubuntu下安装。使用示例:
ftp-upload -h {HOST} -u {USERNAME} --password {PASSWORD} -d {SERVER_DIRECTORY} {FILE_TO_UPLOAD}
评论
您可以提供该工具或其文档的链接吗?
–bwDraco
15年1月27日在16:11
嗨,DragonLord,如果您在Ubuntu中,并且已经安装了ftp-upload(使用我之前给出的命令),则可以手动进行ftp-upload。希望能有所帮助。
–花
15年2月3日在18:01
#3 楼
您需要修复语句中给定的URL。您收到错误消息是因为URL不完整-它缺少您要上传的对象的名称。按照我在下面的操作在“ example.com”之后添加文件名后,您将看到单个命令确实按预期工作。请尝试以下操作:
ftp -u ftp://user:secret@ftp.example.com/my-local-file.txt my-local-file.txt
评论
ftp:无效选项-'u'
–巴本·瓦尔达扬(Babken Vardanyan)
2014年8月1日在17:06
确实:( ftp:u:未知选项
– webDEVILopers
2014年10月28日上午10:24
ftp:u:未知选项
– Morten
18年11月8日在11:45
#4 楼
您也可以尝试lftp
。这里是一个示例:
lftp -e 'cd folder1/folder2; put /home/path/yourfile.tar; bye' -u user,password ftp.theserver.com
请参阅此处以获取更多详细信息
。
评论
要以非Unix名称使用它,我发现了这一点:NN =“'non unix.file'”; lftp -e“ cd文件夹;放入$ NN;再见” -u匿名,ftp.theserver.com
–schweik
20 Jan 17'8:22
#5 楼
安装ncftp并使用其随附的ncftpput工具,类似于以下语法:ncftpput -u ftpuser -p ftppass ftphostname /path/where/to/upload localfile.name
if [ $? -ne 0 ]; then echo "Upload failed"; fi
您甚至可以检查上传状态是好是坏。
普通的ftp客户端也可以与Expect一起使用。
#6 楼
通过命令行将文件上传到远程位置#!/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
#7 楼
我使用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
也能很好地工作。#8 楼
我改进了马蒂的答案,如下所示(包括二进制文件):[ftp_example_1.sh]
$ ftp_example_sh.sh dump_file
ftp -n <<EOF
open 192.168.0.10
user anonymous aaa
binary
put
EOF
[ftp_example_2.sh]
$ ftp_example_2.sh 192.168.0.10 dump_file
ftp -n <<EOF
open
user anonymous aaa
binary
put
EOF
#9 楼
您还可以使用sftp或ftp命令sftp {user}@{IP}
Password:
put {path To File On Local Computer}
#10 楼
FtpPut(){
echo `echo -e "open host\nuser user pass\nbinary\nput \nquit"|ftp -nv`
}
FtpPut asd.txt
FtpPut asd.mp4
FtpPut asd.php
...
评论
如何设置页面?我对Ubuntu中的ftp工具了解不多,但是看起来它在ftp://上令人窒息。尝试把它拿出来吗?
@ IgnacioVazquez-Abrams命令行中的man ftp
类似:通过FTP同步文件,但用于多个文件。
我收到“ -u未知选项”。