1. 程式人生 > 其它 >shell 指令碼 lftp日誌上傳 判斷和上傳的檔案是否一致

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

------------恢復內容結束------------