Guest User

Untitled

a guest
Nov 10th, 2016
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.38 KB | None | 0 0
  1. #!/bin/bash
  2.  
  3. PROGNAME=$(basename $0)
  4.  
  5. OUTFILE="/tmp/ftplist.$RANDOM.txt"
  6. CMDFILE="/tmp/ftpcmd.$RANDOM.txt"
  7. ndays=14
  8.  
  9. print_usage() {
  10. echo ""
  11. echo "$PROGNAME - Delete files older than N days from an FTP server"
  12. echo ""
  13. echo "Usage: $PROGNAME -s -u -p -f (-d)"
  14. echo ""
  15. echo " -s FTP Server name"
  16. echo " -u User Name"
  17. echo " -p Password"
  18. echo " -f Folder"
  19. echo " -d Number of Days (Default: $ndays)"
  20. echo " -h Show this page"
  21. echo ""
  22. echo "Usage: $PROGNAME -h"
  23. echo ""
  24. exit
  25. }
  26.  
  27. # Parse parameters
  28. options=':hs:u:p:f:d:'
  29. while getopts $options flag
  30. do
  31. case $flag in
  32. s)
  33. FTPSITE=$OPTARG
  34. ;;
  35. u)
  36. FTPUSER=$OPTARG
  37. ;;
  38. p)
  39. FTPPASS=$OPTARG
  40. ;;
  41. f)
  42. FTPDIR=$OPTARG
  43. ;;
  44. d)
  45. ndays=$OPTARG
  46. ;;
  47. h)
  48. print_usage
  49. ;;
  50. ?)
  51. echo "Invalid option: -$OPTARG" >&2
  52. exit 1
  53. ;;
  54. :)
  55. echo "Option -$OPTARG requires an argument." >&2
  56. exit 1
  57. ;;
  58. esac
  59. done
  60.  
  61. shift $(($OPTIND - 1))
  62.  
  63. if [[ -z "$FTPSITE" || -z "$FTPUSER" || -z "$FTPPASS" || -z "$FTPDIR" ]];
  64. then
  65. echo "ERROR: Missing parameters"
  66. print_usage
  67. fi
  68.  
  69.  
  70. # work out our cutoff date
  71. TDATE=`date --date="$ndays days ago" +%Y%m%d`
  72.  
  73. echo FTP Site: $FTPSITE
  74. echo FTP User: $FTPUSER
  75. echo FTP Password: $FTPPASS
  76. echo FTP Folder: $FTPDIR
  77. echo Removing files older than $TDATE
  78.  
  79. # get directory listing from remote source
  80. ftp -i -n $FTPSITE <<EOMYF > /dev/null
  81. user $FTPUSER $FTPPASS
  82. binary
  83. cd $FTPDIR
  84. ls -l $OUTFILE
  85. quit
  86. EOMYF
  87.  
  88. if [ -f "$OUTFILE" ]
  89. then
  90.  
  91. # Load the listing file into an array
  92. lista=($(<$OUTFILE))
  93.  
  94. # Create the FTP command file to delete the files
  95. echo "user $FTPUSER $FTPPASS" > $CMDFILE
  96. echo "binary" >> $CMDFILE
  97. echo "cd $FTPDIR" >> $CMDFILE
  98.  
  99. COUNT=0
  100.  
  101. # loop over our files
  102. for ((FNO=0; FNO<${#lista[@]}; FNO+=9));do
  103. # month (element 5), day (element 6) and filename (element 8)
  104. FMM=${lista[`expr $FNO+5`]}
  105. FDD=${lista[`expr $FNO+6`]}
  106. FYY=${lista[`expr $FNO+7`]}
  107.  
  108. if [[ $FYY == *:* ]]
  109. then
  110. FDATE=`date -d "$FMM $FDD" +'%Y%m%d'`
  111. else
  112. FDATE=`date -d "$FMM $FDD $FYY" +'%Y%m%d'`
  113. fi
  114.  
  115. # echo $FDATE
  116. # check the date stamp
  117. if [[ $FDATE -lt $TDATE ]];
  118. then
  119. echo "Deleting ${lista[`expr $FNO+8`]}"
  120. echo "delete ${lista[`expr $FNO+8`]}" >> $CMDFILE
  121. COUNT=$[$COUNT + 1]
  122. fi
  123. done
  124. echo "quit" >> $CMDFILE
  125.  
  126.  
  127. if [[ $COUNT -gt 0 ]];
  128. then
  129. cat $CMDFILE | tr -d "r" > $CMDFILE
  130. ftp -i -n $FTPSITE < $CMDFILE > /dev/null
  131. else
  132. echo "Nothing to delete"
  133. fi
  134.  
  135. rm -f $OUTFILE $CMDFILE
  136. fi
  137.  
  138. Removing files older than 20161026
  139. Deleting 01.10.2016
  140. Deleting 02.10.2016
  141. Deleting 03.10.2016
  142. Deleting 04.10.2016
  143. Deleting 05.10.2016
  144. Deleting 06.10.2016
  145. Deleting 07.10.2016
  146. Deleting 08.10.2016
  147. Deleting 09.10.2016
  148. Deleting 10.10.2016
  149. Deleting 11.10.2016
  150. Deleting 12.10.2016
  151. Deleting 13.10.2016
  152. Deleting 14.10.2016
  153. Deleting 15.10.2016
  154. Deleting 16.10.2016
  155. Deleting 17.10.2016
  156. Deleting 18.10.2016
  157. Deleting 19.10.2016
  158. Deleting 20.10.2016
  159. Deleting 21.10.2016
  160. Deleting 22.10.2016
  161. Deleting 23.10.2016
  162. Deleting 24.10.2016
  163. Deleting 25.10.2016
  164. Deleting 26.10.2016
Add Comment
Please, Sign In to add comment