如何通过运行shell脚本来ftp远程服务器

时间:2013-02-27 13:51:35

标签: shell unix

ftp ipaddress
bin
hash
cd path
get filename
quit

我希望这些行在shell脚本中执行,只有在输入用户名和密码后第一行正在执行,其余行未执行且控件停留在ftp>提示

3 个答案:

答案 0 :(得分:0)

一旦你的脚本调用程序ftp,shell就会失去控制,直到ftp程序完成。所以你需要使用一些新技术。一种方法是使用程序expect,您可以在此处获得提示:https://stackoverflow.com/a/12598169/4323。另一种方法是使用更“可脚本化”的FTP客户端,例如Linux上的lftp,它具有特定的功能,可以实现您想要的脚本用途。

答案 1 :(得分:0)

如果要在脚本而不是交互式shell中执行此操作,则需要使用非交互式FTP客户端。 ncftp是您可以查看的内容。

答案 2 :(得分:0)

或者您可以使用shell“here”文档:

#!/bin/bash 

ftp -in <<EOS
user pswd
bin
hash
cd path
get filename
quit
EOS

here文档通过open程序的stdin发送所有内容,就像你在命令行输入它一样。请注意,ftp客户端可能很挑剔,并且每个客户端似乎都有自己的陷阱集,因此可能需要对man ftp进行一些实验和使用。

看起来这已经出现在Stackoverflow之前,您可能想要通读 how to ftp multiple file using shell script

IHTH