Problème script save.sh

Forum dédié à la distribution du même nom et que vous pourrez télécharger sur http://www.contribs.org. La nouvelle version de cette distribution se nomme SME Server

Modérateur: modos Ixus

Problème script save.sh

Messagepar dlalleme » 25 Sep 2006 09:41

Bonjour,

J'essaie de lancer le shell script de backupcustom à la main et j'obitens ceci ...

Code: Tout sélectionner
[root@chanterelle ~]# sh save.sh journal
/etc/profile.d/e-smith-lib_compspec.sh: line 16: `_esmith_signal-event': not a valid identifier


Et le message d'erreur est le même quelque soit le paramètre passé au script. Je n'ai pas ce message lorsque celui-ci est lancé via le crontab enfin je ne le vois pas !!!!

Avez-vous déjà vu cela ou cela vous parle-t'il ?

Cordialement

Denis
Avatar de l’utilisateur
dlalleme
Vice-Amiral
Vice-Amiral
 
Messages: 521
Inscrit le: 02 Déc 2002 01:00
Localisation: Oise, bassin creillois

Messagepar Gaston » 25 Sep 2006 11:56

Bonjour,

arg :cry: le code a des soucis. A l'évaluation des arguments on part en vrille.
l'empilement des shells fait qu'on explose l'environnement des process.
Supprimer le source de /etc/profile et bash_profile permet de passer outre.
Si tu donnes les droits d'exécution au script et que tu empliles pas un shell supplémentaire
ça passe :(

J'avoue qu'il y a d'autres choses qui me gènent en début de script.
Si on doit passer des params pour le fonctionnement en script il faut certainement être moins brutal
et surtout éviter de sourcer des informations dédiées à la gestion du terminal (/etc/bashrc)
Je suis en train de revoir certaines parties de la v3.2 alpha (pb évaluation diskfree en sme7)
dès que j'ai qqchse de cohérent je passe ça à unnilenium (là je m'embète sur la partie perl du truc).
Ca sert à rien de critiquer sans apporter une solution ...

en résumé sur un sme6 en V3.1.9 et sme7 V3.2.0alpha, supprimer le source de /etc/profile, de .bash_profile.
Mais l'option "journal" n'existe plus en V3.2.0 (faut demander pourquoi et je suis pas bien placé pour)

G.
Avatar de l’utilisateur
Gaston
Amiral
Amiral
 
Messages: 1367
Inscrit le: 06 Oct 2003 00:00
Localisation: Saint Maur, 94 FR

Messagepar dlalleme » 25 Sep 2006 12:58

Bonjour Gaston,

Gaston a écrit:arg :cry: le code a des soucis.


C'est possible car le code n'a pas été évalué par relecture...

Gaston a écrit:A l'évaluation des arguments on part en vrille.
l'empilement des shells fait qu'on explose l'environnement des process.
Supprimer le source de /etc/profile et bash_profile permet de passer outre.
Si tu donnes les droits d'exécution au script et que tu empliles pas un shell supplémentaire
ça passe :(


Concrètement, que faut-il faire ?

Gaston a écrit:J'avoue qu'il y a d'autres choses qui me gènent en début de script.

Quoi donc ?
Gaston a écrit:Si on doit passer des params pour le fonctionnement en script il faut certainement être moins brutal
et surtout éviter de sourcer des informations dédiées à la gestion du terminal (/etc/bashrc)
Je suis en train de revoir certaines parties de la v3.2 alpha (pb évaluation diskfree en sme7)
dès que j'ai qqchse de cohérent je passe ça à unnilenium (là je m'embète sur la partie perl du truc).
Ca sert à rien de critiquer sans apporter une solution ...


Ce n'est pas une critique, c'est plutôt un débat d'idées pour faire avancer le truc :lol: J'ai été l'initiateur du script save.sh à la suite de Ham, puis repris par Argenlos, donc je suis bien placé pour comprendre ce qui va et ce qui ne va pas... Tant que la contrib fonctionnait sous sme 6.01, il n'y avait aucun problème puisque je l'utilise depuis le début et que je l'ai installée chez plusieurs clients.
Les soucis ont commencé lors du passage en version 7 (pas de reconnaissance du lecteur de bande)...
Après quelques réglages mineurs, la contribs fonctionne sans problème jusqu'à ce matin où le lancement
manuel du script provoque l'erreur ci-dessous. Donc je pense que ce problème doit être dû à la dernière mise à jour de la SME.

Au fait, j'ai la dernière version SME 7 et j'utilise la dernière version Backupcustom version TAR

Cordialement
Denis
Avatar de l’utilisateur
dlalleme
Vice-Amiral
Vice-Amiral
 
Messages: 521
Inscrit le: 02 Déc 2002 01:00
Localisation: Oise, bassin creillois

Messagepar Gaston » 25 Sep 2006 15:01

Bonjour,
dlalleme a écrit:Bonjour Gaston,

Gaston a écrit:A l'évaluation des arguments on part en vrille.
l'empilement des shells fait qu'on explose l'environnement des process.
Supprimer le source de /etc/profile et bash_profile permet de passer outre.
Si tu donnes les droits d'exécution au script et que tu empliles pas un shell supplémentaire
ça passe :(


Concrètement, que faut-il faire ?

edite le fichier save.sh et commente les 2 lignes
Code: Tout sélectionner
. /etc/profile
. /root/bash_profile

le bash_profile, finit par sourcer le /etc/bashrc qui contient entre autre des définitions de terminal sans parler des shells de /etc/profile.d appelés par /etc/profile. Ca commence à faire beaucoup de sous shell empilés
Il faut cependant retrouver ce qui était nécessaire dans cette opération. Je pense que seul le chemin absolu vers les commandes, vers le scripts sont nécessaires.
donc remplacer les définitions dans le script save.sh par :
DAR=/usr/bin/dar
MOUNT=/bin/mount
SED=/bin/sed
AWK=/bin/awk
DF=/bin/df
...
ou simplement une définition du PATH :

PATH=/sbin/e-smith:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin

on a pas besoin de plus dans le cron ;)

Gaston a écrit:J'avoue qu'il y a d'autres choses qui me gènent en début de script.

Quoi donc ?
ça :
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/root:/root/save.sh:/usr/local/bin


mais j'ai pas pris le temps de lire le script pour l'instant :(

dlalemme a écrit:Les soucis ont commencé lors du passage en version 7 (pas de reconnaissance du lecteur de bande)...
Après quelques réglages mineurs, la contribs fonctionne sans problème jusqu'à ce matin où le lancement
manuel du script provoque l'erreur ci-dessous. Donc je pense que ce problème doit être dû à la dernière mise à jour de la SME.

je ne vois pas de quelle mise à jour tu parles, le SME sur lequel j'ai reproduit l'erreur est une machine
virtuelle installé avec l'image de Juillet sans aucune mises à jours.
Le problème ne survient que si tu tapes "sh save.sh" avec les droits d'exécution pas de problème (mais, encore, j'ai peur)

Pour le lecteur de bande en SCSI, il peut s'agir du module "st" il semble préférable de charger le "sg" (sinon on se prends des codes d'erreur 256, mais j'ai pas encore trouvé la vrai solution)
Bien que si je suis revenu à BC c'est bien parceque ma bande est reconnue par le système et pas par
d'autre softs (backup2 par exemple :( )

dlalemme a écrit:Au fait, j'ai la dernière version SME 7 et j'utilise la dernière version Backupcustom version TAR

c'est laquelle :?: je me prends la tête avec la gestion du "dar" pour des sauvegardes sur bandes :(
(mais bon je vais m'y mettre vu que c'est la direction que prennent Darell May et les autres)

A mon temps perdu j'essaie de comprendre le code et la logique sous jacente (j'ai un peu décroché depuis 2 ans et les premières version d'Argenlos).
et j'attendais d'avoir assez de bille pour fournir Unillenium (c'est lui qui a repris le flambeau, non?)

Il y a une grande avancée avec la création du fichier de fonctions, avec la séparation de la base de configuration :) merci

Pour la gestion de l'espace disque libre (dans le bc-function), je propose :
Code: Tout sélectionner
[root@srv34 ~]# diff  bc-fonction.ori bc-fonction
113,114c113,114
< #CHEMIN=`/sbin/e-smith/db configuration getprop backupcustom chemin`
< CHEMIN=/home/e-smith/files/ibays/save/html
---
> CHEMIN=`/sbin/e-smith/db confBackupCustom getprop backupcustom chemin`
> #CHEMIN=/home/e-smith/files/ibays/save/html
171,178c171
<       #détermination de la version de SME
<       var=`/sbin/e-smith/db configuration getprop sysconfig ReleaseVersion`
<       if [ "$var" == "6.0.1-01" -o "$var" == "6.0" ]
<       then
<       DISK_FREE_PHY=`df -P -t ext3 -m | awk ' /^\/dev/{sum+=$4} END {printf "%s", sum } '`
<       else
<       DISK_FREE_PHY=`df $CHEMIN | sed -e '1,2d' | awk ' {sum+=$3} END {printf "%s", sum } '`
<       fi
---
> DISK_FREE_PHY=`/bin/df -P $CHEMIN | /bin/sed -e '1,1d' | /bin/awk '{print $4}'`

je ne vois en effet pas la raison de faire la somme de tous les espaces dispo dans tous les points de montage quand un seul nous intéresse.
(en fait j'ai eu le pb car j'ai mis l'ibay sur un autre disque et que le PATH du device de lvol1 est sur 2 lignes en SME7)
la modif est généralisable au deux versions, pas la peine de faire le test.
D'après ce que j'ai vu on peut faire la même chose dans l'interface cgi en récupérant le bc-chemin là aussi + modif de l'appel du perl dans le genre
Code: Tout sélectionner
sub diskfree () {
        my $libre="error";
        my $bc_chemin = "/fs1";

        #vefication espace disque
        #Filesystem         1024-blocks      Used Available Capacity Mounted on
        #/dev/vx/dsk/gan_dg01/gan_lvol1     49574       810     46204       2% /fs1

        if(open(DF, "/bin/df -P $bc_chemin|/bin/grep -v Mounted |")) {
                while (<DF>) {
                        (undef, undef, undef, $libre) = split(/\s+/, $_);
                }
        return ($libre);
        }
}

sauf que là ça ne marche que si on a installé le SME en anglais :( et que c'est juste un draft de validation

j'ai aussi trouvé des traductions qui manque mais je sait plus où pour l'instant.
Dès que j'ai un peu de temps je m'y remet. La contrib m'a beaucoup servie en 5.6 et depuis que j'ai migré en 7 je suis un peu géné au entournure

G.
PS désolé pour la longueur du post
Avatar de l’utilisateur
Gaston
Amiral
Amiral
 
Messages: 1367
Inscrit le: 06 Oct 2003 00:00
Localisation: Saint Maur, 94 FR

Messagepar dlalleme » 25 Sep 2006 16:05

Gaston,

Je vois que tu es loquace pour ce sujet. Je comprends que tu utilises la version DAR que j'ai toujours refusé car j'estime que la commande TAR peut faire aussi bien.

Premièrement, ta modif sur les deux lignes ont réglé le problème (logique), je n'avais pas fait attention à cela, de même pour le save.sh dans le PATH.

En ce qui concerne le code de la contrib, j'ai travaillé uniquement sur le save.sh et sur le crontab, le reste a été fait par Argenlos. Je peux peut être t'aider pour le shell script.

La version TAR que j'utilise ne m'a jamais posé de problème en sachant que j'ai fait des restaurations individuelles en utilisant la commande TAR à partir des sources sur bande.

Veux-tu que je t'envoie le dernier rpm sans DAR ainsi que mon save.sh modifié ?

Cordialement

Denis

PS : J'oubliai de te remercier pour l'astuce et la solution, alors merci beaucoup
Avatar de l’utilisateur
dlalleme
Vice-Amiral
Vice-Amiral
 
Messages: 521
Inscrit le: 02 Déc 2002 01:00
Localisation: Oise, bassin creillois

Messagepar guiguid » 01 Oct 2006 14:21

J'ai pas mal bossé dessus :
http://guiguid.free.fr/backup-custom/

J'ai fait d'aute modifs, je vous les envois lundi :

# - reorganisation majeure du code
# - utilisation de "nice" devant les fonction a forte utlisation du CPU
# - suppression de la ligne de commande pour "dar" et utilisation d'un fichier pour stocker toutes les options
# - decoupage du code en fonction
# - suppression des redondances
# - petites corrections de bugs (fichier tempo non existant...)
# - suppression de la recurcivite pour l'envois d'email
# - separation du code et des fonctions ou declaration de variables

voir : http://smerp.societeg.com/ftopic496.php
Avatar de l’utilisateur
guiguid
Vice-Amiral
Vice-Amiral
 
Messages: 636
Inscrit le: 10 Avr 2003 00:00
Localisation: 66

Messagepar guiguid » 02 Oct 2006 10:26

MAJ effectuee sur http://guiguid.free.fr/backup-custom/

BC-2.0-alpha-dgir-patch-2.tar.gz
Avatar de l’utilisateur
guiguid
Vice-Amiral
Vice-Amiral
 
Messages: 636
Inscrit le: 10 Avr 2003 00:00
Localisation: 66


Retour vers E-Smith / SME Server

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité