Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#26 Le 23/03/2021, à 13:26

Klone

Re : Script de destruction de données avec scrub

Hello!
Me revoilà après avoir un peu progressé dans le script, cependant je ne parviens pas à intégrer la date ainsi que le modèle du support dans mon log.

Actuellement j'en suis là :

#!/bin/bash

UID_ROOT=0     # Seuls les utilisateurs avec un $UID valant 0 ont les droits de root.
E_NONROOT=67   # Code de sortie si non root.

# À exécuter en tant que root, évidemment.
if [ "$UID" -ne "$UID_ROOT" ]
then
  echo "Vous devez être root pour exécuter ce script."
  exit $E_NONROOT
fi  

udisksctl status

SNA=`(sudo su -c "udisksctl status" | grep "sda")`
SNA=`sed 's/ /_/g' <<< "$SNA"`
SNB=`(sudo su -c "udisksctl status" | grep "sdb")`
SNB=`sed 's/ /_/g' <<< "$SNB"`
SNC=`(sudo su -c "udisksctl status" | grep "sdc")`
SNC=`sed 's/ /_/g' <<< "$SNC"`
SND=`(sudo su -c "udisksctl status" | grep "sdd")`
SND=`sed 's/ /_/g' <<< "$SND"`
Date=`date +%d-%m-%y`
Dt=$("$Date à %Hh%M")

    fct_menu ()
    {
    echo
    echo "Quel disque dur effacer? [1-5]"
    echo "1 : sda"
    echo "2 : sdb"
    echo "3 : sdc"
    echo "4 : sdd"
    echo "5 : quitter"
    echo "veuillez choisir :"

    read optionmenu
   	case $optionmenu in
    	1)
    		echo "Effacement de sda"
echo "Ce script a été lancé le $Dt." > /home/ubuntu/Scripts/Logs-Scrub/$SNA-$Date.txt
echo "Disque dur : $SNA" > /home/ubuntu/Scripts/Logs-Scrub/$SNA-$Date.txt
    		scrub -p fillzero -f /dev/sda > /home/ubuntu/Scripts/Logs-Scrub/$SNA-$Date.txt ; exit;;
    	2)
    		echo "Effacement de sdb"
echo "Ce script a été lancé le $Dt." > /home/ubuntu/Scripts/Logs-Scrub/$SNB-$Date.txt
echo "Disque dur : $SNB" > /home/ubuntu/Scripts/Logs-Scrub/$SNB-$Date.txt
    		scrub -p fillzero -f /dev/sdb > /home/ubuntu/Scripts/Logs-Scrub/$SNB-$Date.txt ; exit;;
    		
    	3)
    		echo "Effacement de sdc"
echo "Ce script a été lancé le $Dt." > /home/ubuntu/Scripts/Logs-Scrub/$SNC-$Date.txt
echo "Disque dur : $SNC" > /home/ubuntu/Scripts/Logs-Scrub/$SNC-$Date.txt
    		scrub -p fillzero -f /dev/sdc > /home/ubuntu/Scripts/Logs-Scrub/$SNC-$Date.txt ; exit;;
    		
    	4)
    		echo "Effacement de sdd"
echo "Ce script a été lancé le $Dt." > /home/ubuntu/Scripts/Logs-Scrub/$SND-$Date.txt
echo "Disque dur : $SND" > /home/ubuntu/Scripts/Logs-Scrub/$SND-$Date.txt
    		scrub -p fillzero -f /dev/sdd > /home/ubuntu/Scripts/Logs-Scrub/$SND-$Date.txt ; exit;;
    		
    	5)
    		exit;;
    	*)
    		echo "erreur de frappe"
    		fct_menu;;
    		esac
    }
    fct_menu

Je pense que mes lignes echo sont mal placées ou leur syntaxe n'est pas bonne.

Du coup voici les seuls retours que j'ai dans mon log :

scrub: using Quick Fill with 0x00 patterns
scrub: please verify that device size below is correct!
scrub: scrubbing /dev/sdd 3904897024 bytes (~3724MB)
scrub: 0x00    |................................................|

Une idée de ce qui ne va pas? J'ai pas mal googlé tout ça en vain.

Hors ligne

#27 Le 23/03/2021, à 13:58

Tawal

Re : Script de destruction de données avec scrub

Hello,

Pour avoir la date (et autres infos dans le log), ça vient de tes redirections vers le log qui effacent le fichier à chaque fois.

echo "Ce script a été lancé le $Dt." > /home/ubuntu/Scripts/Logs-Scrub/$SND-$Date.txt
echo "Disque dur : $SND" > /home/ubuntu/Scripts/Logs-Scrub/$SND-$Date.txt
    		scrub -p fillzero -f /dev/sdd > /home/ubuntu/Scripts/Logs-Scrub/$SND-$Date.txt

Doit devenir :

echo "Ce script a été lancé le $Dt." > /home/ubuntu/Scripts/Logs-Scrub/$SND-$Date.txt
echo "Disque dur : $SND" >> /home/ubuntu/Scripts/Logs-Scrub/$SND-$Date.txt
    		scrub -p fillzero -f /dev/sdd >> /home/ubuntu/Scripts/Logs-Scrub/$SND-$Date.txt

Remplacement des derniers > par >>

Edit: tes sed sont des tanks pour écraser des mouches :
Utilises la substitution de variables :

SNA=${SNA// /_}

Il y a encore d'autres choses mais je vais pas tout refaire (surtout que je pourrais aussi pondre des énormités lol)

Dernière modification par Tawal (Le 23/03/2021, à 14:09)


Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne

#28 Le 23/03/2021, à 14:29

bruno

Re : Script de destruction de données avec scrub

Il faut aussi arrêter d'utiliser sudo su (bis), surtout pour une commande qui ne nécessite pas d'être root.

Il faut éviter d’utiliser

truc=`macommande`

pour récupérer le résultat d'une commande, on utilise

truc=$(macommande)

Exemple pour récupérer la date avec l'heur et les minutes (ce qui évitera une variable inutile et le problème des fichiers de logs écrasés à chaque test) :

current_date=$(date +%F-%HH%Mm%S)

Pour récupérer la liste des lecteurs avec udiskctl (il y a probablement plus simple) :

disks=$(udisksctl status | awk  '{if (NR>2) {print $NF}}')

Hors ligne

#29 Le 23/03/2021, à 14:54

MicP

Re : Script de destruction de données avec scrub

Dans son message #26, Klone a écrit :

… je ne parviens pas à intégrer la date …

Remplace ces deux lignes :

Date=`date +%d-%m-%y`
Dt=$("$Date à %Hh%M")

par cette seule ligne :

Dt=$(date +'%A %e %B %Y à %H:%M')

=======
Si tu veux voir ce que ça va donner (<=> ce qu'il va y avoir dans la variable Dt),
récupère ce qui est entre les parenthèses et entre le dans une ligne de commande,
comme ça :

michel@xubu:~$ date +'%A %e %B %Y à %H:%M'
mardi 23 mars 2021 à 13:52
michel@xubu:~$ 

Dernière modification par MicP (Le 23/03/2021, à 14:59)

Hors ligne

#30 Le 06/04/2021, à 12:16

Klone

Re : Script de destruction de données avec scrub

Hello,
J'ai dû bosser sur un autre projet en parallèle, je m'y remet seulement.

J'ai modifié la date comme MicP l'a indiqué dans son précédent message, mais je me retrouve avec cette erreur lors de l'exécution.

Effacement de sdd
./scrub-zero.sh: ligne 59: /home/ubuntu/Scripts/Logs-Scrub/$SND-$Dt.txt : redirection ambiguë
./scrub-zero.sh: ligne 60: /home/ubuntu/Scripts/Logs-Scrub/$SND-$Dt.txt : redirection ambiguë
./scrub-zero.sh: ligne 61: /home/ubuntu/Scripts/Logs-Scrub/$SND-$Dt.txt : redirection ambiguë

Voici les lignes concernées:

echo "Ce script a été lancé le $Dt." > /home/ubuntu/Scripts/Logs-Scrub/$SND-$Dt.txt
echo "Disque dur : $SND" >> /home/ubuntu/Scripts/Logs-Scrub/$SND-$Dt.txt
    		scrub -p fillzero -f /dev/sdd >> /home/ubuntu/Scripts/Logs-Scrub/$SND-$Dt.txt ; exit;;

Cela fonctionnait et exécutait bien le script de bout en bout auparavant, mais depuis que j'ai fait ces quelques modifications nada.

Aussi je commence à me pencher sur un autre soucis au niveau de l'exécution du script, j'aimerai que celui ci m'ouvre un terminal dans lequel il s'exécuterait lorsque l'on double clique dessus; je me suis penché du côté de Gnome-Terminal et Xterm, apparemment c'est faisable en ajoutant une simple commande du type

xterm -e './home/ubuntu/Scripts/Scrub/scrub-zero.sh;read'

En l'état je me retrouve avec; aucune fenêtre lors d'un double clic, et évidemment une farandole de fenêtres lorsque que je l'exécute depuis un terminal.

En espérant avoir exposé clairement mes soucis.

Hors ligne

#31 Le 06/04/2021, à 21:00

Tawal

Re : Script de destruction de données avec scrub

Hello,

Pour les erreurs, mets des guillemets autour de tes fichiers de redirection.
Comme par exemple :

echo "Ce script a été lancé le $Dt." > "/home/ubuntu/Scripts/Logs-Scrub/$SND-$Dt.txt"
echo "Disque dur : $SND" >> "/home/ubuntu/Scripts/Logs-Scrub/$SND-$Dt.txt"
    		scrub -p fillzero -f /dev/sdd >> "/home/ubuntu/Scripts/Logs-Scrub/$SND-$Dt.txt" ; exit;;

Le savoir n'a d’intérêt que si on le transmet.
Useless Use of Cat Award
Filenames and Pathnames in Shell: How to do it Correctly
À chaque problème sa solution, à chaque solution son moyen, si pas de moyen, toujours le problème !

Hors ligne