BBS水木清华站∶精华区

发信人: netadmin (爱我中华), 信区: Unix 
标  题: Re: 能不能写个给FTP自动执行的SCRIPT? 
发信站: BBS 水木清华站 (Thu Apr  6 09:27:21 2000) WWW-POST 
 
    有时用户需要用FTP传输许多大文件。这时必须登录服务器并逐一地传输文件。而且 
只有在等待一个文件传送完毕后才能输入命令传输下一个文件。这样用户需花费很长时间 
守候在终端前等待每一个文件传输结束。为了简化上述工作,大多数UNIX平台上的FTP实 
现都支持非在线的FTP传输,用户只需把要输入的命令逐条地写在Shell脚本中,FTP传输 
根据事先写好的脚本会自动地进行。 
    下面是实现非在线的FTP会话所需要的步骤: 
    使用vi或其他文本编辑器创建一个包含用户所使用的FTP命令的脚本,下面是一个简 
单脚本的例子: 
#This file’s name is scriptname 
open ftpservername 
user myname mypassword 
binary 
cd /incoming 
put myfilename 
bye 
    该脚本中包含了将文件传到主机ftpservername上/incoming目录中所需的所有操作。 
首先是用open命令指定传输的目录主机名,接着使用ftp的user命令将用户的用户名 
(myname)和口令(mypassword)送给主机做身份验证。验证通过后,binary命令设置二进制 
的传输模式,将/incoming设置成当前目录,然后用put命令把文件myfilename传到主机上 
。传输后,使用bye命令关闭连接。由于脚本中列出的顺序将对传输是否可以成功有很大 
影响,可能的话,在使用其进行非在线传输之前,要对脚本进行仔细的检查。 
    ·验证脚本,使用下面命令可激活FTP并且让其在没有用户干预的情况下自动执行: 
 
    $ ftp –vni <scriptname 
    其中: 
    -v  向用户显示FTP客户和服务器间的对话过程,这有助于脚本的调试。 
    -n  关闭自动登录的功能,若不使用该选项,那么ftp将使用用户home目录中的“ 
.netrc”文件或用户当前系统中的用户名进行自动登录。这样会和脚本中使用的登录命令 
相冲突,从而导致会话的失败。 
    -i  在多个文件传输中关闭交互式操作的模式。 
    scriptname  包含ftp脚本的文件名。 
    ·当验证了该脚本以后,可以使用at或cron工具在指定的时间调度其运行,执行时也 
可以不使用-v选项,如执行该脚本的cron项为: 
    ftp –in </pathname/ftpscript 
    用户最好将-v选项打开并把其输出重定向到一个日志文件中。这样一旦会话失败,用 
户可对日志文件进行分析以找到出错的根源。下述命令可将ftp命令执行时的详细信息记 
录到日志文件中: 
    ftp –inv </pathname/ftpscript >/pathname/logfile 
    若将非在线传输与第三方传输技术联合使用,那么管理员不但可在非在线的其主机和 
其他服务器之间传递文件,也可以在网络中的任何两台主机间传递文件。 
 
 
 
【 在 VisualC (学习VC★打倒北约) 的大作中提到: 】 
 就是能够让FTP程序根据我要登录的SERVER名字,自动知道我的登录用户名 
 及口令,以及自动执行cd,bin,put/get之类这样的FTP命令. 
 这样的SCRIPT好象用输入重定向的办法搞不定的说...:( 
 
 
-- 
※ 来源:·BBS 水木清华站 smth.org·[FROM: 210.42.146.3]  

BBS水木清华站∶精华区