Guest User

Untitled

a guest
Nov 10th, 2016
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.84 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
Add Comment
Please, Sign In to add comment