【发布时间】:2013-02-27 13:51:34
【问题描述】:
ftp ipaddress
bin
hash
cd path
get filename
quit
我希望这些行在 shell 脚本中执行,只有在输入用户名和密码后执行第一行,其余行不执行,控制卡在 ftp> 提示符下
【问题讨论】:
ftp ipaddress
bin
hash
cd path
get filename
quit
我希望这些行在 shell 脚本中执行,只有在输入用户名和密码后执行第一行,其余行不执行,控制卡在 ftp> 提示符下
【问题讨论】:
一旦您的脚本调用程序ftp,shell 就会失去控制,直到 ftp 程序完成。所以你需要使用一些新技术。一种方法是使用程序expect,您可以在此处获得提示:https://stackoverflow.com/a/12598169/4323。另一种方法是使用更“可脚本化”的 FTP 客户端,例如 Linux 上的lftp,它具有特定功能,可以实现您想要的那种脚本化使用。
【讨论】:
如果您想在脚本而不是交互式 shell 中执行此操作,则需要使用非交互式 FTP 客户端。 ncftp 是您可以查看的。
【讨论】:
或者你可以使用一个shell“这里”文档:
#!/bin/bash
ftp -in <<EOS
user pswd
bin
hash
cd path
get filename
quit
EOS
here 文档通过打开程序的标准输入发送所有内容,就像您在命令行中输入一样。请注意,ftp 客户端可能很挑剔,而且每个客户端似乎都有自己的一套陷阱,因此可能需要进行一些实验和使用man ftp。
看起来这在 Stackoverflow 上已经出现过,您可能需要仔细阅读 how to ftp multiple file using shell script
IHTH
【讨论】:
[unix] ftp 找到。我已经包括了一个很好的 S.O.在我的回答中,这应该是一个很大的帮助。 尝试将调用行更改为ftp -in <<EOS。祝你好运。