Bonjour,
Je fais un petit script qui regroupe l’exécution de plusieurs commandes hdparm, parted et blockdev.
Vu les commandes, j'utilise un check des droits de l'utilisateur "$EUID -ne 0".
Le script fait déjà ce que je veux, je suis aller vers la simplicité d'écriture et je réduirai le code si possible par la suite (ex: boucle while pour répétition d'echo, etc...).
Mais j'aimerais y ajouter un log d’exécution qui ressortirait l'intégralité de l’exécution du script.
Afin de ne pas surcharger le script et de le ralentir lors de son exécution et pour la propreté du code, j'ai trouvé en cherchant sur le net la possibilité de ressortir l'intégralité de l’exécution d'un script, y insérant la commande
"exec > >(tee /var/log/last_exec_monscript.log)"
Tout se passe très bien en utilisateur root, mais en utilisateur "sudo", j'ai une erreur:
"Syntax error: redirection unexpected" et ce pour la ligne de ma redirection.
Script:
Le script est placé dans /usr/bin .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 # #!/bin/bash # Crouge="\\033[1;31m" Cbleu="\\033[1;34m" Cvert="\\033[1;32m" Cnormal="\\033[0;39m" if [[ $EUID -ne 0 ]]; then echo echo -e "This script must be run as$Crouge ROOT$Cnormal user" echo exit 42 else #Enregistrement du log exec > >(tee /var/log/last_exec_monscript.log) echo echo " --------------------------------------------------------------" echo "| Listing des disques présents : parted -l / blockdev --report |" echo " --------------------------------------------------------------" #Parsing du dossier /dev/ à la recherche d'un type block par défaut sd? (a,b,c,etc.) for file in `ls /dev/sd?`; do echo echo -e "---------------$Crouge Information du disque $file $Cnormal-----------------" echo #Recuperation du numéro de série , redirection d'erreur dans /dev/null -> vide si inexistant (choix perso de voir le champs vide qu'inexistant) vserial=$(hdparm -i $file 2> /dev/null | egrep -ioe "serialno=.*" | awk -F"=" '{print $2}') echo -e "Serial Number: $vserial" #Récuperation des infos du disque et partitions. parted $file print echo -e "----------------------$Cbleu Listing des accès $Cnormal-----------------------" echo #Récupération des accès partition comprise --> * blockdev --report $file* echo echo done echo "----------------------------------------------------------------" echo "Log: /var/log/last_exec_monscript.log -- Last use: "$(date +%d/%m/%Y--%H:%M) echo "----------------------------------------------------------------" echo fi exit 0
J'ai essayé de faire le log dans vers "$HOME/last_exec_monscript.log" , toujours la même erreur, donc ce n'est pas un problème de droit visiblement...
J'ai essayé en rajoutant un sudo à la commande tee et exec (normalement inutile mais bon...) mais rien y fait.
Je suis ouvert à toutes modifications quant au fond et à la forme du script.
Existe-t-il un moyen plus propre que celui la pour faire un affichage console et une redirection ?
D'avance merci, bonne journée.
Draleg
Partager