通过UNIX SHELL脚本实现FTP自动传输

作者:徒步天下([url]http://hiker2008.blog.51cto.com/[/url]

  问题提出:因工作需要,要业务系统要求作完日终后,把数据从主机通过FTP传送到备机。<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 

需要分析:

1.每天日终时间不同,所以最好是手工编制脚本,当业务人员日终完成后,手动调用,而不能通过任务调度来实现。

2.每天要传送的数据文件名不同(与日期相关),所以要在脚本中处理文件名。

3.需要业务人员提供的信息越少越好,每天操作,命令多了,出错的机会也多。

具体脚本如下:(在 Sco Open Server 5.0.x 上测试通过)。

希望对大家有所帮助。

――――――――――――――――――


#!/bin/sh

#取得年月日

YYYY=`date "+%Y"`      

MM=`date "+%m"`

DD=`date "+%d"`

filename="$YYYY$MM$DD"

#显示年月日

echo "Input Backup Date: ($filename) \c"

#读取输入,如果是当天日期,可直接回车

read filename

if test -n filename

then

    echo "Backup Date: $filename"

else

    filename="$YYYY$MM$DD"

    echo "Backup Date: $filename"

fi

#取得日期后,写一个FTP脚本

#备机地址

echo "open 1x.xx.xx.x0"> ftp.cmd

#备机用户,密码

echo "user loginname password">>ftp.cmd

echo "bin">>ftp.cmd

echo "hash">>ftp.cmd

#备机目录

echo "cd /usr/database">>ftp.cmd

#文件名为 data20070310

echo "put data$filename">>ftp.cmd

echo "close">>ftp.cmd

echo "bye">>ftp.cmd

cd /usr/database

#自动执行ftp

cat $HOME/ftp.cmd|ftp -n

echo "Auto Backup $filename Data Finished!"

 

―――――――――――――――――――