几个ftp shell的例子汇总

    技术2022-05-11  50

    [jyfx@aydmk1 app]$ cat get.shftp -n -i -v <<EOFopen 10.87.25.118user topeng i1love_mm binlcd /home/jyfx/dm_etl/app/bincd /home/topeng/topetl/app/binmget *.jarquitEOF

     

     

     

    #!/bin/ksh

    #检查是否能连接到24.3ping 10.243.24.3#如果能ping通if [ "$?" -eq "0" ]then#连接到ftpftp  -i  -n 10.243.24.3<<EOF#用户名,密码登陆user emip emip#指定远端目录cd  /global/data1/emip/dist/nsm_home/domaincfg/#指定本地目录lcd  /export/home/dwsy/domaincfgBAK/#批量取得以xml后缀名的文件mget *.xml  #断开ftp closebye#ftp内容执行完毕EOF   #进入本地目录     cd  /export/home/dwsy/domaincfgBAK/   #将下载的文件打包,2005年12月15日17时50分00秒,名为bak20051215175000.tar.gz   tar cvf bak`date +%Y%m%d%H%M%S`.tar *.xml   #将下载的文件打gzip包   gzip *.tar   #完成定时任务,删除3天前的文件   find . -mtime +3 -exec rm -f {} /;fi

      

                             ftp_getfile.sh使用说明  我先把我们能够正常运行的那个shell原封不动发给你  你可能也要自己改一下,应该能保证你最简单的调通   内容如下 #!/usr/bin/bsh #---------------------------------------------------- #读取配置文件中的目录,从数据集市接口服务器响应的目录中得到文件 #ZHT #---------------------------------------------------- I=1 while [ $I -lt 10 ] do echo "join" cd /etl/shell usrname="root" usrpass="root" filedate=`date +%Y%m%d%H%M%S`.dat file_config="file_dir.cfg" for i in `cat $file_config` do  local_dir=`echo $i|awk -F "&" '{print $1}'`  ftp_dir=`echo $i|awk -F "&" '{print $2}'`  cd $local_dir  if [ -f $filedate ]  then     rm -rf $filedate  fi    #----------------------------  #取得响应目录下的文件的列表  #----------------------------  (echo "user $usrname $usrpass"    echo "cd $ftp_dir"    echo "prompt off"    echo "nlist $ftp_dir $local_dir/$filedate"    echo "by")|ftp -v -i -n 10.243.216.177       #---------------------------    #读取文件列表文件,取得得到文件    #---------------------------    for j in `cat $filedate|awk 'substr($0,1,1)=="-" && substr($9,1,1)!="." {print $9}'`    do      oldfilename=$j      newfilename=$j.tmp      filelength=`cat $filedate|grep "$j"|awk '{print $5}'`      (echo "user $usrname $usrpass"       echo "cd $ftp_dir"       echo "rename $oldfilename $newfilename"       echo "get $newfilename"       echo "delete $newfilename"       echo "by")|ftp -v -i -n 10.243.216.177 >> $newfilename.log       mv $newfilename $oldfilename       localfilelength=`ls -l|grep $oldfilename|grep -v "tmp.log"|awk '{print $5}'`       if [ "$filelength" -eq "$localfilelength" ]       then         echo "get file $oldfilename is cuccessfull"         rm $newfilename.log       else         echo "get file $oldfilename is failed">>$filedate.err.log       fi;    done    rm $filedate   done  sleep 1800 done       你只要改一下 兰色部分   cd /etl/shell   例如 我这个shell叫做ftp_getfile.sh /etc/shell 就是我这个ftp_getfile.sh所在的目录,同时也是配置文件file_dir.cfg所在的目录    echo "by")|ftp -v -i -n 10.243.216.177 >> $newfilename.log   例如 10.243.216.177 是你想ftp的主机,那么你需要改变这个这 IP地址 ,从而符合你那边的环境     同时你需要修改file_dir.cfg这个文件 说明file_dir.cfg 这是ile_dir.cfg一行 他的含义是 本地目录&远程目录,用&做分割符,   /ETL/DATASORT/FS/CAD_CODE&/JKDS/huawds/FS/CAD_CODE/_EXF   所以你只需要定义你的本地目录和和远程目录即可       但是这里不能保障你的 2)            提供一套保障文件完整性的机制 , 用于避免取到没有 Geneate 完成的的结果文件 ; 即如果你的文件还在生成阶段 , 那么就不能够正常下载          

    最新回复(0)