使用了1种lftp记录sftp操作日志的方法。判断上传的文件是否一致 - #!/bin/bash
- #用户名
- user=root
- #密码
- password=123
- #sftp的地址
- ip=1.1.1.1
- #需要上传到的sftp目的目录
- destdir=/upload
- #本地需要上传文件的目录
- sourcedir=/opt/
- #需要上传的文件名
- filename=123.txt
- lftplog=/root/lftplog.txt
- SSHDIR=/etc/ssh/ssh_config
- if [[ $? -eq 0 ]];then
- echo -e "\033[32m 正在修改ssh_config配置....\033[0m"
- > SSHDIR
- echo 'Host x.x.x.x
- StrictHostKeyChecking=no' >> $SSHDIR
- fi
- #将ftp连接后执行命令的标准输出内容输出到7,把7保存在result.txt中
- exec 7>&1 1>$lftplog
- lftp -u $user,$password sftp://$ip <<EOF
- cd $destdir
- lcd $sourcedir
- put $filename
- ls
- close
- quit
- EOF
- ##恢复标准输出,以为上面语句将标准输出绑定到fd 7了
- exec 1>&7
- #关闭7号输出,所以这样就把操作sftp的记录的标准输出都输出到了result.txt中了
- exec 7>&-
- exit_file=`cat $lftplog | grep $filename`
- #$filename ftp服务器名称
- RemoteFileSize=`grep $filename $lftplog | awk '{print $5}'`
- #$files 本地文件路径
- LocalFileSize=`stat $filename | awk '/Size/ {print $2}'`
- if [ ! -n "$exit_file" ]
- then
- echo "sftp中上传的文件不存在,上传失败!!!"
- elif [ $RemoteFileSize == $LocalFileSize ]
- then
- echo "sftp中有上传的文件,上传成功"
- else
- echo "sftp中上传的文件不存在,上传失败!!!"
- fi
复制代码
|