精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● FreeBSD>>网络应用>>客户端软件应用>>非交互模式ftp的几种方法

主题:非交互模式ftp的几种方法
发信人: sungang(笨刚)
整理人: zhcharles(2002-01-30 16:02:34), 站内信件
1) 

在$HOME目录创建文件.netrc,并将其读写权限改为模式“600”。该文件的内容为:  

machine www.testhost.com login abc password abc123 
macdef init 
binary 
bell 
hash 
prompt 
!clear 
mget * 
!clear 
bye 

---- 该文件的作用是为FTP自动注册www.testhost.com服务器定义相应的账号与口令,并定义一个宏init。 
init宏的工作过程是:将文件传输格式类型设为二进制(binary);在每个文件传输结束后响铃以提醒用户(bell);在文件传输过程中显示传输进度(hash);关闭交互提示开关(prompt),以便后继的“mget *” 操作(获取远方服务器当前工作目录下的所有文件)能自动进行;在“mget *”操作的前后,执行“!clear”清屏;最后执行“bye”退出FTP。注意,上述.netrc文件应以空行结束,因为文件中定义了一个宏,而宏的定义必须以空行结束。  

执行时,运行  
ftp www.testhost.com
即可。 

2)  
如果在NT/2000环境。 
想实现非交互方式传输文件,可以使用文本编辑软件编辑一文本文件FTP.TXT,其内容首先是远程主机的用户名,接着是用户的口令,再就是一些FTP命令,注意所有的FTP命令均为小写,否则FTP认为是无效的命令,例如: 
  weekend(远程主机的用户名) 
  mypassword(远程主机用户的口令) 
  binary(以二制方式,可以照原样传输来自其它系统的字符) 
  hash(每当传输了512字节的数据时打印出一个“#”字符。在传输大型文件或有一个较慢的连接时这个命令很有用,它可以使用户了解事情的进展情况) 
  get .profile AAAA(取文件.profile,并且改名为AAAA) 
  bell(响铃) 
  close(断开连接) 
  bye(退出FTP命令) 

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

3) 
还有一种方式。 
假设我们从本地机器上向机器名为HOSTNAME的远程机器传送文件filename.ext,A01.ext的源路径为/usr/data/mydirect,目标路径为/usr/data/anywhere,利用HOST2上的一个用户DGMAIN进行登录,用户weekend的口令为mypassword,建立的SHELL文件myftp.sh如下:  

cd /usr/data/mydirect 
ftp -n  HOSTNAME  
user  weekend  mypassword 
bin 
cd /usr/data/anywhere 
put filename.ext 
close 
quit  

当本地机器与远程机器HOSTNAME的通讯线路连通后,执行put.sh,即可自动非交互的实现从本地机器向远程机器发送文件filename.ext。  


4) 
借助expect软件。在FreeBSD下,装了ports的话, 
cd /usr/ports/lang/expect 
make install 
make distclean 
在Linux下这个软件系统已经自带了。 
编一个下面的脚本aaa.txt。 
下面这个脚本从一个主机上使用匿名ftp取下一个文件来。其中,主机名是第一个参数。文件名是第二个参数。 
        spawn    ftp    [index $argv 1] 
        expect "*Name*" 
        send     "anonymous " 
        expect "*Password:*" 
        send [exec whoami] 
        expect "*ok*ftp>*" 
        send "get [index $argv 2] " 
        expect "*ftp>*" 
                send "bye" 
执行expect aaa.txt 

5)用重定向方式
#!/bin/sh 
ftp -in <<END
o HOST
us USERNAME PASSWORD
OPERATIONS
bye
END



----
Best Regards,
Sun Gang
[email protected]
icq: 2499593
Don't Click me!       

[关闭][返回]