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

Wer*_*rCD 20 command-line 10.10 ftp pipe

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

ftp user:password@server
ftp: user:password@server: Unknown host
ftp> echo HELLO WORLD!
ftp> quit
Run Code Online (Sandbox Code Playgroud)

我想做一个单行 FTP 命令...

ftp user:password@server -command "echo HELLO WORLD"
Run Code Online (Sandbox Code Playgroud)

或者

"echo HELLO WORLD" | ftp user:password@server 
Run Code Online (Sandbox Code Playgroud)

类似的东西......作为我正在尝试创建的脚本的一部分。没有传输任何内容,我只需要回显一些指令,这是我发现在我的两个系统之间执行此操作的最简单方法。

cha*_*dge 22

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

lftp -u username,password -e "your command;quit" ftp.site.com
Run Code Online (Sandbox Code Playgroud)

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

  • 你不需要把密码放在命令行上:一个不错的选择是把它放在 `~/.netrc` 中并确保它是模式 `0600`。FTP 可以在线协商非纯文本密码。 (2认同)

小智 22

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

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

 open YourFtpServer.com
 user YourUserName YourPassword
 put localfilename remotefilename
 bye
Run Code Online (Sandbox Code Playgroud)

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

 ftp -n < ftpcommands.txt
Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助某人。我在网上找不到任何有关此解决方案的内容,因此我必须自己弄清楚。