发信人: 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! |
|