如何在一行上执行FTP命令?


18

这是我登录FTP时正在做的事情:

ftp user:password@server
ftp: user:password@server: Unknown host
ftp> echo HELLO WORLD!
ftp> quit

我想执行单行FTP命令...

ftp user:password@server -command "echo HELLO WORLD"

要么

"echo HELLO WORLD" | ftp user:password@server 

类似...作为我要创建的脚本的一部分。一切都没有转移,我只需要回显一些指令,这是我发现在两个系统之间进行操作的最简单方法。


1
等等,FTP 不是为了这个!FTP代表文件传输协议。您需要SSH。
nickguletskii

当您需要打一些钉子而您所拥有的只是一个熨衣板...您便可以利用自己所拥有的。我正在尝试Telnet,但是FTP可以工作。对第二个系统的控制有限,没有其他功能……即使FTP回波是“熨衣板”,它也可以工作。
WernerCD 2011年

好吧,这对我没有用……nick@AccessDenied:~$ ftp ftp> echo "hi" ?Invalid command ftp>
nickguletskii

1
ftp没有echo命令。 lftp确实,但它是纯粹的地方,所以我不明白你为什么会想本身要做到这一点....
poolie

@nickguletskii是的。。。我试图得到我做错事情的答案(也许我可以更清楚了)。查尔斯(Charles)有一个对我有用的答案(除了我使用的cli-php解决方案之外)。
WernerCD 2011年

Answers:


20

对于SSH来说,这确实是更多的工作(正如其他人所指出的那样),但是如果您确定要使用ftp,请尝试使用lftp。它可免费用于所有当前受支持的Ubuntu版本。您可以使用以下命令安装 sudo apt install lftp

lftp -u username,password -e "your command;quit" ftp.site.com

lftp记录了一个-c运行命令然后退出的开关,但是在大多数发行版中,它似乎已损坏。 -e除非您发出,否则将使您保持联系quit


1
Eeeeew ...纯文本密码...
nickguletskii11

-c在Ubuntu上确实适合我。
poolie 2011年

2
您无需将密码放在命令行中:一个不错的选择是将其放入~/.netrc并确保为mode 0600。FTP可以在网络上协商非纯文本密码。
poolie 2011年

这样可行!太棒了 是的,这不是一个“好的”解决方案,但是我的选择在第二台计算机上受到限制,因此FTP虽然很丑陋,但却可以使用。
WernerCD 2011年

19

我在寻找一种方法来使单个ftp命令执行从此计算机到ftp服务器的文件传输时找到了该线程。方法如下:

创建一个包含ftp命令的文件:(将其称为“ ftpcommands.txt”)

 open YourFtpServer.com
 user YourUserName YourPassword
 put localfilename remotefilename
 bye

然后运行ftp命令并将文件输入其中:

 ftp -n < ftpcommands.txt

-n选项使ftp收到“ open”命令后不会尝试自动登录。

希望能帮助到某人。我在网上找不到任何可以解决此问题的方法,因此我必须自己弄清楚。


注意:如果您的文件传输失败,并显示“ 200”,请尝试在文件传输之前添加命令“ passive”,以进入被动模式。
尼克·辛格

2

您不能使用FTP远程执行命令。它代表文件传输协议。您真正需要的是SSH。

您需要做的就是将软件包安装ssh在两台计算机上,然后按照本指南设置无密码登录名。

现在如何称呼它:

ssh username@host echo "Hello World\!"

例如,这是我自己做的:

nick@AccessDenied:~$ ssh nick@localhost echo "Hello World\!"
Hello World!

第二个系统没有SSH。我实际上已经通过FTP_RAW在PHP中工作了一些东西,但是我会看是否在某个时候无法正常工作。
WernerCD 2011年

1

作为@charlesbridge答案的补充,在您的〜/ .bashrc文件中包括以下内容:

alias yoursite="lftp -u <username> -e \"<commandA;commandB>\" yoursite.com"

源文件:

source ~/.bashrc

现在,使用别名“您的站点”登录并执行任意数量的命令。


0

使用以下方法安装busybox:

apt-get install busybox

busybox可以同时在Linux或嵌入式系统上工作,然后使用ftpget和ftpput

busybox ftpput -u USER -p PASSWD URL_FTPSERVER FILE_U_WANT

busybox ftpget -u USER -p PASSWD URL_FTPSERVER FILE_U_WANT
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.