当前位置:Linux教程 - Linux - NT和UNIX下FTP非交互方式文件传输

NT和UNIX下FTP非交互方式文件传输

  FTP(FileTransferProtocol)是文件传输协议,通过它可以从计算机传输或传输到计算机文件。FTP命令可以交互方式使用,也可以非交互方式使用。交互方式的使用较简单,命令执行时系统会逐步提示,非交互方式的实现虽然复杂,但大大方便使用者,因为FTP会自动完成所有的操作。我们在使用FTP命令时,为了操作方便,往往会按非交互方式使用,在WindowsNT3.51和SCOUNIX3.0下FTP实现非交互方式的处理不一样,下面笔者就分别介绍。
  无论在WindowsNT3.51还是在UNIX系统下,FTP命令只能在安装了TCP/IP协议之后才能运行。关于如何在两种系统上安装TCP/IP协议,请参考其系统说明书,这里不再说明。FTP命令执行过程一般分为下面几个步骤,首先是设置联接,联接就是和远程主机进行联接,联接后,用户开始注册,用户注册时要检查其口令,注册成功后,用户就可以访问远程主机。

  一、在WindowsNT3.51环境下使用FTP。
  在WindowsNT下,FTP命令格式为:
  FTP[-v][-d][-i][-n][-g][-s:filename][host]
  除最后一项参数外其它均必须为小写,其意义分别为:
  -v不显示远程服务器响应。
  -n禁止初次连接时自动登录。
  -i在多个文件传输时关闭交互提示。
  -d允许调试、显示客户和服务器之间所有的命令。
  -g不允许使用文件名通配符,文件名通配符是指允许在本地文件及路径名中使用匹配字符。
  -s:filename指定一个包含ftp命令的文本文件;在启动ftp之后将自动运行这些命令,该参数中没有空格。使用本开关可以替代重定向。
  host指定要连接的远程主机的主机名或IP地址。如果要指定主机,必须是命令行中的最后一个参数。
  如果想实现非交互方式传输文件,则可以使用文本编辑软件编辑一文本文件FTP.TXT,其内容首先是远程主机的用户名,接着是用户的口令,再就是一些FTP命令,注意所有的FTP命令均为小写,否则FTP认为是无效的命令,例如:
  lzf(远程主机的用户名)
  lzf12345(远程主机用户的口令)
  binary(以二制方式,可以照原样传输来自其它系统的字符)
  hash(每当传输了512字节的数据时打印出一个“#”字符。在传输大型文件或有一个较慢的连接时这个命令很有用,它可以使用户了解事情的进展情况)
  getPROFILEAAAA(取文件.PROFILE,并且改名为AAAA)
  bell(响铃)
  close(断开连接)
  bye(退出FTP命令)

  在命令提示符下运行“FTP-s:FTP.TXTDZSERVER”命令即可自动实现文件传输,其中FTP.TXT文件必须在当前目录下或为此文件加上全路径名,DZSERVER为远程主机的主机名,当然也可以将DZSERVER写为IP地址的方式,例如“FTP-s:FTP.TXT200.28.1.1”。

  二、在UNIX环境下使用FTP。
  在UNIX系统下,使用RCP命令可以实现远程文件传输,但双方都必须为同一种系统,如果远程为其它系统,则RCP就无能为力了。使用FTP命令不但可以实现非交互方式传输方件,而且在双方使用不同系统时也能使用。UNIX下的FTP命令的使用与WindowsNT有所区别,通过UNIX的帮助系统可以知道,FTP命令格式为:
  ftp[-v][-d][-i][-n][-t][-g][host]
  从命令格式中可以看出,其命令参数基本和在WindowsNT系统下差不多,但是没有[-s:FILENAME]参数,也就是说,不能通过编辑一任意文本文件来实现非交互方式传输文件,不过值得高兴的是,ftp命令在执行时会去寻找一文件名为.netrc的文件,如果此文件存在并且其中有FTP命令行中指定的主机名,则会执行.netrc文件中命令行。.netrc文件中放有远程主机名、注册用户名、用户口令和定义的宏,其格式如下:
  machine主机名
  login用户名
  password用户口令
  macdefinit(定义宏)
  binary
  hash
  get远程主机文件名本地文件名
  bell
  close
  bye

  在命令提示符下运行“ftp主机名”命令即可自动实现文件的传输。另外在UNIX下使用FTP命令应注意下面的事项。
  1、在.netrc文件中,如果使用password命令,其用户口令在文件中没有被加密,所以必须对.netrc文件设置权限,可以在命令提示符下使用“chmod0600.netrc”命令设置权限,即只有其文件主有读写权限,而其组成员及其它用户均不可有任何权限,否则password命令无效,导致注册过程中断。
  2、在.netrc文件中,如果使用macdefinit命令,则在其下一行可以输入FTP命令,系统会自动执行这些命令且直到遇到一空行,也就是说在文件尾必须有至少一行空行,否则会出现错误信息“Macro definition missing null line terminator”。
  3、如果在UNIX系统下使用超级用户注册,则.netrc文件必须放在根目录下,如果使用一般用户注册,则.netrc文件必须放在“/usr/用户名”目录下。
  4、在UNIX系统下所有命令均为小写,包括FTP命令