几个ftp shell的例子汇总

原创 2007年09月29日 14:08:00

[jyfx@aydmk1 app]$ cat get.sh
ftp -n -i -v <<EOF
open 10.87.25.118
user topeng i1love_mm
bin
lcd /home/jyfx/dm_etl/app/bin
cd /home/topeng/topetl/app/bin
mget *.jar
quit
EOF

 

 

 

#!/bin/ksh

#检查是否能连接到24.3
ping 10.243.24.3
#如果能ping通
if [ "$?" -eq "0" ]
then
#连接到ftp
ftp  -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
close
bye
#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完成的的结果文件;
即如果你的文件还在生成阶段,那么就不能够正常下载
 
 
 
 
 

几个shell编程的小例子

  • 2013年06月18日 13:05
  • 2KB
  • 下载

第二部分 Linux Shell高级编程技巧——第四章 几个脚本例子——终结篇

笔记 #几个脚本例子 #kill_process.sh #编辑 [root@localhost 0421]# vi kill_processes.sh #查看内容 [root@localhost 0...
  • Wentasy
  • Wentasy
  • 2013年04月25日 20:48
  • 3046

汇总下几个IP计算/转换的shell小脚本

1. IP转换为整数 > vi ip2num.sh #!/bin/bash # 所有用到的命令全是bash内建命令 IP_ADDR=$1 [[ "$IP_ADDR" =~ "^[0-9]...

几个内存泄漏的例子

  • 2013年07月24日 17:32
  • 62KB
  • 下载

hibernate和spring的几个小例子

  • 2012年10月15日 16:14
  • 27.09MB
  • 下载

SAP FTP上传出现的几个小问题归纳

1.上传CSV文件的时候分隔符是分号,导致传过去的一行数据全部在第一列的第一格里面。在上传之前转换成逗号; 2.上传文件出现中文乱码,网上出现中文乱码的情况很多,这里我只记录自己遇到的。中文传到FT...
  • po908
  • po908
  • 2016年03月07日 10:00
  • 829

文件操作的几个常用例子

  • 2012年07月28日 11:45
  • 1.02MB
  • 下载

FTP服务器需要开几个端口

FTP服务器需要开几个端口 新买了台服务器,只用来提供FTP和SQL Server服务,为保证安全,只开放21和1433端口。但FTP不能访问,于是我就花了点时间研究了一下防火墙的日志和在网上找了些...

几个MD5加密的例子

  • 2011年12月22日 13:10
  • 14KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:几个ftp shell的例子汇总
举报原因:
原因补充:

(最多只允许输入30个字)