Shell脚本FTP获取远程主机文件的操作

  • Post author:
  • Post category:其他


虽然shell脚本比较复杂,但是好处是在Linux系统中调用方便,能做的工作不多,但对于精简代码很有帮助,以下是以前工作中的一个FTP获取文件的脚本,该脚本的思路不错,很多文件移动,备份,数据处理工作均可以通过这个脚本进行改良,调用简单,自动维护脚本必备
大笑

#! /bin/sh
boss_host_ip=远程主机IP
boss_userid=用户名
boss_password=密码
boss_remote_dir=/data1/asiainfo/interface/dq_data/ #远程主机路径
local_dir=/imdata/metaone/interface/report/ #本机路径
begin_file=begin.txt 
#校验当前是否存在相同文件,并按日期归档
echo "`date +%Y%m%d` `date +%H`:`date +%M`:`date +%S` ----Program  start!" >> $local_dir/getReport.log
if [ ! -f $local_dir/$begin_file ]
then
touch $local_dir/$begin_file
echo "`date +%Y%m%d`" > $local_dir/begin.txt
chmod 777 $local_dir/begin.txt
mdate=`awk '{print $1}' $local_dir/$begin_file`
echo "begin.txt=$mdate" >> $local_dir/getReport.log
#创建当前日志文件夹
if [ ! -d $local_dir/$mdate ]
then
mkdir $local_dir/$mdate
chmod 777 $local_dir/$mdate
echo "`date +%Y%m%d` `date +%H`:`date +%M`:`date +%S` --file creat over!" >> $local_dir/getReport.log
else
echo "File is exist!" >> $local_dir/getReport.log
fi
#连接远程服务器,并取文件到本地
ftp -n $boss_host_ip <<endl
user $boss_userid  $boss_password
prompt
cd $boss_remote_dir/report/
lcd $local_dir/$mdate
mget *$mdate*.rpt
mdelete *$mdate*.rpt
bye
endl
#校验文件数量是否正确
cd $local_dir/$mdate
datcnt=`ls *$mdate*.rpt|wc | awk '{print $1}'`
rptcnt=20 #要求的文件数量
if [ $datcnt -ge $rptcnt ]
then
cat *$mdate*.rpt > $local_dir/check.txt
fi
fi
mv $local_dir/$begin_file $local_dir/over.txt
echo "`date +%Y%m%d` `date +%H`:`date +%M`:`date +%S` Program success!" >> $local_dir/getReport.log

创建完成后可以通过crontab -e 定时执行当前脚本取远程目录

例如将脚本保存到/home/oracle/getfile.sh 调用一下命令即可完成。

crontab -e
#每天10点取文件
* 10 *  *  * /home/oracle/getfile.sh >> /home/oracle/getfile.log



版权声明:本文为moscot_wu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。