ftp ipaddress
bin
hash
cd path
get filename
quit
我希望这些行在 shell 脚本中执行,仅在输入用户名和密码后执行第一行,其余行未执行,并且控件卡在 ftp> 提示符处
或者,您可以使用 shell“此处”文档:
#!/bin/bash
ftp -in <<EOS
user pswd
bin
hash
cd path
get filename
quit
EOS
这里的文档通过打开程序的标准输入发送所有内容,就像您在命令行中输入一样。请注意,ftp 客户端可能很挑剔,而且每个客户端似乎都有自己的一套陷阱,因此man ftp
可能需要进行一些实验和使用。
看起来这在 Stackoverflow 上已经出现过,您可能想阅读 如何使用 shell 脚本 ftp 多个文件
IHTH
一旦你的脚本调用了程序ftp
,shell 就会失去控制,直到 ftp 程序完成。所以你需要使用一些新技术。一种方法是使用程序expect
,您可以在此处获得提示:https ://stackoverflow.com/a/12598169/4323 。另一种方法是使用更“可脚本化”的 FTP 客户端,例如lftp
在 Linux 上,它具有特定功能,可以实现您想要的那种脚本化使用。
如果您想在脚本而不是交互式 shell 中执行此操作,则需要使用非交互式 FTP 客户端。ncftp是您可以查看的一个。