secure_delete 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. #!/bin/sh
  2. #set -x
  3. ########################################################################
  4. #
  5. ## [Thunar] Custom actions: secure delete file
  6. #
  7. ########################################################################
  8. # @Author: Stephane HUC
  9. # @mail : devs@stephane-huc.net
  10. # GPG Fingerprint: CE2C CF7C AB68 0329 0D20 5F49 6135 D440 4D44 BD58
  11. # @licence: GNU/GPL 3
  12. # Date : 2017/08/31
  13. ########################################################################
  14. #
  15. # Please, install those tools:
  16. # ( only on of 3 first is needed )
  17. # - shred
  18. # - srm
  19. # - wipe
  20. # - zenity
  21. #
  22. ########################################################################
  23. #
  24. # Open thunar, menu 'Edit' > 'Custom...'
  25. # + Add a new action:
  26. # Name: Secure Delete
  27. # Command: link to this file, as '/dir/secure_delete %F'
  28. # ---
  29. # Conditions:
  30. # Motif: *
  31. # and choose all mentions files, not folders!
  32. #
  33. ########################################################################
  34. #
  35. ##
  36. ### variables
  37. ##
  38. #
  39. ########################################################################
  40. files="$@"
  41. nb=32
  42. txt_notify="L'effacement sécurisé a l'air de s'être bien effectué. Vérifiez !"
  43. txt_progress="Le fichier '%s' est en cours d'effacement !"
  44. txt_warning="L'effacement sécurisé ne s'est pas effectué correctement. Vérifiez !"
  45. ttl_notify="Effacement sécurisé :: OK"
  46. ttl_warning="Effacement sécurisé :: KO"
  47. if [ -e /dev/urandom ]; then random=/dev/urandom;
  48. elif [ -e /dev/random ]; then random=/dev/random;
  49. fi
  50. ########################################################################
  51. #
  52. ##
  53. ### FUNCTIONS
  54. ##
  55. #
  56. ########################################################################
  57. delete(){
  58. text="$(printf "${txt_progress}" "${file}")"
  59. if [ -x "$(which shred)" ]; then
  60. _shred
  61. elif [ -x "$(which wipe)" ]; then
  62. _wipe
  63. elif [ -x "$(which srm)" ]; then
  64. _srm
  65. elif [ -x "$(which rm)" ]; then
  66. _rm
  67. fi
  68. unset text
  69. }
  70. loop() {
  71. for file in $files; do
  72. #[ -d $file ] && delete
  73. [ -f $file ] && delete
  74. done
  75. }
  76. _notify(){
  77. zenity --notification --text="${txt_notify}" --title="${ttl_notify}"
  78. }
  79. _rm() {
  80. if rm -f -P "${file}"; then _notify; else _warning; fi
  81. }
  82. _shred(){
  83. if [ ${random} ]; then
  84. shred -f -n ${nb} -u -z --random-source=${random} "${file}"
  85. else
  86. shred -f -n ${nb} -u -z "${file}"
  87. fi
  88. if [ $? = 0 ]; then _notify; else _warning; fi
  89. }
  90. _srm(){
  91. if srm -G -m ${file}; then _notify; else _warning; fi
  92. }
  93. _warning(){
  94. zenity --warning --text="${txt_warning}" --title="${ttl_warning}"
  95. }
  96. _wipe(){
  97. if wipe -Q ${nb} -RS ${random} ${file}; then _notify; else _warning; fi
  98. }
  99. ########################################################################
  100. #
  101. ##
  102. ### "Run, Forest, run..."
  103. ##
  104. #
  105. ########################################################################
  106. zenity --question; if [ $? = 0 ];then loop;fi