shell 脚本 lftp日志上传 判断和上传的文件是否一致

------------恢复内容开始------------

 1 #!/bin/bash 
 2  
 3 #用户名
 4 user=root
 5 #密码
 6 password=123
 7 #sftp的地址
 8 ip=x.x.x.x
 9 #需要上传到的sftp目的目录
10 destdir=/upload
11 #本地需要上传文件的目录
12 sourcedir=/opt/
13  
14 #需要上传的文件名
15 filename=yilia11.txt
16 
17 lftplog=/root/lftplog.txt
18  
19 SSHDIR=/etc/ssh/ssh_config
20 
21 if [[ $? -eq 0 ]];then
22    echo -e "\033[32m 正在修改ssh_config配置....\033[0m"
23   > SSHDIR
24   echo 'Host x.x.x.x
25 StrictHostKeyChecking=no' >> $SSHDIR
26 fi
27  
28 #将ftp连接后执行命令的标准输出内容输出到7,把7保存在result.txt中 
29 exec 7>&1 1>$lftplog
30 lftp -u $user,$password sftp://$ip <<EOF
31 cd $destdir
32 lcd $sourcedir
33 put $filename
34 ls 
35 close
36 quit
37 EOF
38 ##恢复标准输出,以为上面语句将标准输出绑定到fd 7了
39 exec 1>&7
40 #关闭7号输出,所以这样就把操作sftp的记录的标准输出都输出到了result.txt中了
41 exec 7>&-
42 
43 exit_file=`cat $lftplog | grep $filename`
44 
45 #$filename ftp服务器名称
46 RemoteFileSize=`grep $filename $lftplog | awk '{print $5}'`
47 
48 #$files 本地文件路径
49 LocalFileSize=`stat $filename | awk '/Size/ {print $2}'`
50 
51 if [ ! -n "$exit_file" ]
52 then
53     echo "sftp中上传的文件不存在,上传失败!!!"
54 elif [ $RemoteFileSize == $LocalFileSize ]
55 then
56   echo "sftp中有上传的文件,上传成功"
57 
58 else
59     echo "sftp中上传的文件不存在,上传失败!!!"
60 fi
61  

 参考:

https://blog.csdn.net/iris_csdn/article/details/103367533
https://blog.csdn.net/sanzhongzhifu/article/details/84254538

------------恢复内容结束------------

posted on 2022-05-06 10:58  朝颜陌  阅读(510)  评论(0编辑  收藏  举报

导航