免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 4559 | 回复: 16
打印 上一主题 下一主题

菜鸟求教怎样做到最完美的FTP自动上传脚本?自己做的已贴上 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-05-05 10:46 |只看该作者 |倒序浏览
#!/bin/sh
#
host="test@ftp.com"
localfile="/home/ftp/test/ITtest.*.txt"
localdir="/home/ftp/test/"
filename="*.txt"
remotedir="/file"
bakfile="/home/ftp/test/bak/ITtest.`date "+%Y%m%d%H%M%S"`.tgz"
cformat="ITtest.`date "+%Y%m%d%H%M%S"`"
clocalfile="/home/ftp/test/test.*"
#------------------------↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑自定义↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
echo off
echo 'Start change ITtest.txt file name to 14bit time format'
cd $localdir
mv $localfile $cformat
#------------------------↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑改名,并加入时间::::test.20100505103555↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
echo off
echo 'Start Sftp files {{{ test }}} !!!'
sftp -oidentityfile=/home/test/.ssh/ssh_host_rsa_key "$host" <<EOC
binary
put $clocalfile
bye
EOC
echo "Sftp Files to Compuleted";
#-----------------------↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑用对方服务器生成的key进行自动上传↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
#
echo off
echo 'Local files backup to /home/ftp/test/bak'
cd $localdir
if [-s file]
then
exit 1
fi
tar -zcvpf $bakfile $clocalfile
find /home/ftp/test/bak -size 45c|xargs rm -rf
#-----------------------↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑做一个备份的压缩文件确保安全↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
echo off
echo 'Delete original Files!!!'
rm -f $clocalfile------------------↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑删除原来留下的文件↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

bug1: 不管有没有*.txt这个文件,该脚本都不会判断而进行下一步。
bug2: 之前因为不管有没有文件,脚本都要生成一个压缩的备份文件,大小45,所以我才做了一个多余的动作就是生成后再删除这些空的压缩备份文件,觉得脚本执行效率太低。
疑惑1: 不知道怎样才能做到监控脚本执行情况?想写个log,但本人比较菜鸟,知道>>>>>$file,但不知道怎样加判断才能上下脚本执行不出错误呢?
疑惑2:在FTP上传的过程中如何才能判断这个文件确实上传成功了?如果中途网络中断,那么该脚本无法执行,用怎样的方式才能处理这种突发状况呢?

论坛徽章:
0
2 [报告]
发表于 2010-05-05 10:59 |只看该作者
用Perl + Net::FTP吧,自己设计一个完美的FTP客户端,方便脚本使用。

论坛徽章:
0
3 [报告]
发表于 2010-05-05 11:17 |只看该作者
用Perl + Net::FTP吧,自己设计一个完美的FTP客户端,方便脚本使用。
yigenjin 发表于 2010-05-05 10:59



    额~~这个技术本人还没达到。。能否就该脚本来完善呢?我也是抱着学习脚本的态度来完善该脚本,谢谢

论坛徽章:
0
4 [报告]
发表于 2010-05-05 12:13 |只看该作者
自己顶一下。。哪位高人能够给点建设性的意见吗?

论坛徽章:
0
5 [报告]
发表于 2010-05-05 13:57 |只看该作者
回复 4# eboy240
  1. #!/bin/bash
  2. auto_ftp()
  3. {
  4. cd $4
  5. /usr/bin/ftp -i -n $1 <<EOF
  6. user $2 $3
  7. $7
  8. cd $5
  9. prompt off
  10. $8 $6
  11. by
  12. EOF
  13. }
  14. auto_ftp 10.199.79.130 root 123456 /root /root name.txt bin put
复制代码
上回看到的一个自动ftp上传的脚本,忘了是哪个大虾写的。$1是目标ip,$2是目标用户,$3是密码,$4是起始目录,$5是目的目录,$6是上传的文件,$7是上传的方式,$8是put就是上传的意思,你借鉴一下吧

论坛徽章:
0
6 [报告]
发表于 2010-05-05 14:10 |只看该作者
#!/bin/sh

UNAME=`uname`
if [ "$UNAME" = "Linux" ];then
   . ${HOME}/.bash_profile
else
   . ${HOME}/.profile
fi


for  FILE_NAME  in  `cat $1`
do
echo $FILE_NAME
ftp -n 218.204.255.113 <<!
user test 12345678
lcd /data/wangpangejie/destDir_tianjin
cd /space
prompt
binary
mput $FILE_NAME

quit
!
done


请参考。

论坛徽章:
0
7 [报告]
发表于 2010-05-05 14:22 |只看该作者
回复 6# changying0521

不严谨啊。

1. 其结果就是有多少个文件连接多少次FTP服务器。
2. 有空格的文件路径将出现异常。

论坛徽章:
0
8 [报告]
发表于 2010-05-05 14:36 |只看该作者
回复  eboy240 上回看到的一个自动ftp上传的脚本,忘了是哪个大虾写的。$1是目标ip,$2是目标用户,$3是密码 ...
where27 发表于 2010-05-05 13:57



    十分感谢提供,参考一下

论坛徽章:
0
9 [报告]
发表于 2010-05-06 09:21 |只看该作者
帮你 顶下。 我囍也写过。 没办法贴出来。  。

上面的两种 改改就可以了 应该

论坛徽章:
0
10 [报告]
发表于 2010-05-06 11:36 |只看该作者
配合使用expect不错~
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP