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

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

这是我登录 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

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

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

lftp 记录了一个-c运行命令然后退出的开关,但它似乎在大多数发行版中都被破坏了。 -e将使您保持连接,除非您发出quit

答案2

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

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

 open YourFtpServer.com
 user YourUserName YourPassword
 put localfilename remotefilename
 bye

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

 ftp -n < ftpcommands.txt

-n 选项可防止 ftp 在收到您的“打开”命令时自动尝试登录。

希望这能对某人有所帮助。我在网上找不到任何解决方案,所以我不得不自己想办法。

答案3

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

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

现在如何调用它:

ssh username@host echo "Hello World\!"

例如,这是我对自己做的:

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

答案4

使用以下方式安装 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

相关内容