关闭

一个ftp shell的例子

标签: shelluserfile
1120人阅读 评论(0) 收藏 举报
分类:

#远程目录下每天会根据产生群ID来产生目录,因为每天的产生的群ID是不同的,所以目录名称和个数也是不定的
#但是每个目录下生成的文件是相同,不仅文件格式相同,文件名称也是相同的,但是文件内容是不同的
#我们现在要下载这些文件,使他们能被ETL调用,但是ETL不能识别可变目录,只能识别可变文件
#所以我们的处理方案是将文件下载下载到同一个目录下,但是因为文件名是相同的,而目录名是不同的
#所以我们将文件名改为目录名.例如:远程目录/951/filesize.txt,远程目录/952/filesize.txt,那么下载到本地后
#变成 本地目录/951 远程目录/952 ,注意此时本地目录下的951是远程目录/951/filesize.txt,本地目录下的952是远程目录/952/filesize.txt,


#远程主机登录用户名
 username=mad
#远程主机登录用户密码
 password=mad
#远程主机ftp下载目录
 ftp_dir=/home/mad/mkt_home/webapps/data/ad/bi/task
#本地存放下载文件的目录
 local_dir=/home/etl/business/mad/send
#需要下载的文件名
 filename=filesize.txt
#记录所有需要下载的目录的文件
 dir_record=dir_record.txt
#进入本地目录
  cd $local_dir
#登录远程主机,进入到远程目录,列出远程目录下所有目录打印到本地目录中一个文件中
  echo "---->start read dir"
  (echo "user $username $password"
   echo "cd $ftp_dir"
   echo "prompt"
   #列出远程远程目录下所有目录打印到本地目录中的${dir_record}这个文件中
   echo "mdir $ftp_dir ${local_dir}/${dir_record}"
   #表示同意。即"yes"
   echo "y"
   echo "by")|ftp -v -i -n 192.168.163.41
  echo "---->start get file"
 

 #读取记录目录的文件,取得对应的远程目录
 # 'substr($0,1,1)=="d" 判断是否是文件类型是否是目录。{print $9}即打印目录名
 #肯定是要循环读取了
   for dir in `cat $dir_record|awk 'substr($0,1,1)=="d" {print $9}'`
   do
     cd $local_dir
     #将要访问远程目录
     sub_ftp_dir=${ftp_dir}/$dir
     echo "sub_ftp_dir="$sub_ftp_dir
    
     (echo "user $username $password"
      echo "prompt"
      echo "cd $sub_ftp_dir"
      #从远程目录获取
      echo "get $filename"
         #表示同意。即"yes"
      echo "y"
      echo "by")|ftp -v -i -n 192.168.163.41 
     #改名,即将文件名改为它所在的目录名
      mv $filename $dir
       
   done
   #进入本地目录
   cd $local_dir
   #删除记录远程目录的文件
   rm $dir_record
  
    

0
0

猜你在找
【直播】计算机视觉原理及实战——屈教授
【套餐】深度学习入门视频课程——唐宇迪
【套餐】Hadoop生态系统零基础入门
【套餐】嵌入式Linux C编程基础
【套餐】2017软考系统集成项目——任铄
【套餐】Android 5.x顶级视频课程——李宁
【直播】广义线性模型及其应用——李科
【直播】从0到1 区块链的概念到实践
【直播】机器学习之凸优化——马博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:31048次
    • 积分:563
    • 等级:
    • 排名:千里之外
    • 原创:23篇
    • 转载:0篇
    • 译文:0篇
    • 评论:4条