2013-02-27 124 views
0
ftp ipaddress 
bin 
hash 
cd path 
get filename 
quit 

我想在一个shell脚本只有第一行输入用户名和密码,其余的行后执行要执行这些线路不执行的FTP远程服务器和控制是停留在FTP >提示如何通过运行shell脚本

回答

0

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

+0

感谢约翰让我来试试你的方式,并会回答你回来 – 2013-02-27 14:06:43

0

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

+0

对不起它不工作是只是采取ftp和sftp – 2013-02-27 14:20:58

0

或者你可以使用一个shell“here”文档:

#!/bin/bash 

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

here文档通过打开的程序的标准输入发送的一切,就像你键入它在命令行中。请注意,ftp客户端可能很挑剔,每个人似乎都有自己的一套陷阱,因此可能需要一些实验和使用man ftp

看起来这又拿出了#2之前,你可能想通过 how to ftp multiple file using shell script

阅读IHTH

+0

我已经使用了你提供的shell不工作.. – 2013-02-27 14:22:46

+0

我认为约翰是正确的,因为一旦它调用ftp的shell失去控制直到ftp程序完成 – 2013-02-27 14:25:02

+0

解决ftp客户端脚本问题是你可以花几天的时间。我没有时间详细调试这个。我强烈建议你阅读你的ftp客户端的手册页,并且你可以通过搜索'[unix] ftp'找到你想要查看的任何401问题。我已经包括一个很好的S.O.在我的答案中应该是一个很大的帮助。 **尝试将调用行更改为'ftp -in << EOS' **。祝你好运。 – shellter 2013-02-27 14:29:43