Prayer

在一般中寻求卓越
posts - 1256, comments - 190, trackbacks - 0, articles - 0
  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

自动ftp ksh脚本

Posted on 2008-08-13 10:02 Prayer 阅读(621) 评论(0)  编辑 收藏 引用 所属分类: Shell

#!/usr/bin/ksh                                                                         
#!                                              |#
#! Usage:       自动上传到备份服务器         |#

#!----  配置参数 -------------------------------|#
PING=/usr/sbin/ping
work_dir="/home/andy"                     # 程序运行路径
log_src_dir="/home/andy/"           # 日志所在路径
log_backup_dir="/home/andy/logbak"               # 日志备份路径
put_file_type="0"     # 传文件给对方主机系统的方式:(1:以FTP方式上传文件到远程主机;0:拷贝文件到本地目录,给远程主机进行FTP)
file_title="shdntc"                                          # 文件名开始6位标识
ftp_hours_ago="12"                                       # 上传多少小时前的数据
#! 下面配置FTP方式下远程主机参数
remote_ip="10.1.1.45"                                # 远程主机IP地址
remote_user="andy"                                    # 登录远程主机用户名
remote_passwd="andy"                                  # 登录远程主机密码
remote_dir="."                                     # 远程主机路径
#! 下面配置LOCAL方式下的本地主机参数
local_path="/home/andy/log"     # 本地给远程主机采集的目录,需要有读写权限
now_time=`date '+%Y%m%d%H'`                             # 取系统时间
date_str=`date '+%Y%m%d'`                               #
put_file_lists=""                                       #
 
#!----  开始判断文件并且上传 -----------------------|#
if [ -d ${log_src_dir} ];then
        echo "`date '+%Y-%m-%d %R'` == $log_src_dir exsits, wait..."   
else
        echo "`date '+%Y-%m-%d %R'` == ${log_src_dir} not exsits!!"
        exit 0
fi
cd $log_src_dir
echo "`date '+%Y-%m-%d %R'` == Starting get file lists!"
r_time_str=`expr ${now_time} - ${ftp_hours_ago}`
for file in ${smgid}*
do
        echo "$file"
        time_str=`echo "$file"|cut -c 10-19`
        echo "${time_str} ${r_time_str}"
        if [ ${time_str} -le ${r_time_str} ];then
                put_file_lists=${put_file_lists}" "${file}
                echo "`date '+%Y-%m-%d %R'` ==  Add filelists [ ${file} ]"
        fi
done
if [ -z "${put_file_lists}" ]
then
  echo  "`date '+%Y-%m-%d %R'` == Get file Failed, no file exsits!\n"
  exit 0
else
        echo "`date '+%Y-%m-%d %R'` == Complete get put file lists!"
        if [ ${put_file_type} = "1" ];then
         $PING -c 5 ${remote_ip} >/dev/null
      if [ "$?" = "0" ];then
          echo "`date '+%Y-%m-%d %R'` == Network test ok! Starting put file..."
          (echo "open ${remote_ip}"
          echo "user ${remote_user} ${remote_passwd}"
          echo "bi"
          echo "cd ${remote_dir}"
          echo "mput ${put_file_lists}"
          echo "ls ${smgid}* ${log_src_dir}/list.dat"
          echo "bye") |ftp -in 2>/dev/null
         else
                 echo "`date '+%Y-%m-%d %R'` == Network test error! put file next time!\n"
                 exit 0
         fi
          else
         if [ -d  ${local_path} ];then
          echo "`date '+%Y-%m-%d %R'` == ${local_path} exsits! Starting cp file..."
          cp ${put_file_lists} ${local_path}
          if [ "$?" = "0" ];then
           echo "`date '+%Y-%m-%d %R'` == CP file to ${local_path} OK!"
          else
           echo "`date '+%Y-%m-%d %R'` == Err: CP file to ${local_path} ERROR!"
          fi
         else
          echo "`date '+%Y-%m-%d %R'` == Err: ${local_path} not found! Please check it!"
         fi
         chmod a+r+w ${local_path}/* 2>/dev/null
         for file in ${local_path}/${smgid}*
   do
    basename ${file} >>${log_src_dir}/list.dat 2>/dev/null
   done
        fi
fi
if [ -d ${log_backup_dir}/${date_str} ];then
        echo "`date '+%Y-%m-%d %R'` == ${log_backup_dir}/${date_str} exsits, wait for backup"  
else
        mkdir -p ${log_backup_dir}/${date_str}
        if [ "$?" != "0" ];then
                echo "`date '+%Y-%m-%d %R'` == Create ${log_backup_dir} failed"
                exit 0
        fi
  chmod a+r+w+x  ${log_backup_dir}/${date_str}
fi
if [ -f list.dat ];then
        mv  `cat list.dat` ${log_backup_dir}/${date_str}
        compress -f ${log_backup_dir}/${date_str}/* 2>/dev/null
        rm list.dat
        echo "`date '+%Y-%m-%d %R'` == Deal file complete\n"
 

 
 原文地址 http://blog.chinaunix.net/u1/35038/showart_286568.html 


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理