Stiffler64
Bonjour,
Je suis étudiant en semestre 1 en informatique. Jusqu'à présent j'utilisais la distribution Debian à l'école et un ami m'a conseillé de passer sur Fedora : j'ai donc installé Fedora Core 6 chez moi...
Petit souci technique, dans le cadre de mes études je dois effectuer un script en shell utilisant les commandes "dialog" et "Xdialog" : sur Debian ça marche nikel, à l'appart il ne s'affiche rien, j'ai un écran bleu avec un bouton "appliquer" mais rien a voir avec ce que j'attends... ou plutôt ce que j'obtenais sur Debian!!!
J'ai fais des recherches sous google, qui me parle de librairies gtk que j'ai déjà installé, mais rien n'y fais ça ne marche pas!!!
J'espère que quelqu'un ici pourra m'aider parce que là je suis vraiment dans la m... !
Merci d'avance à tous!
Pikachu_2014
Salut,
cela me semble bien bizarre en effet.
Peux-tu poster ton script s'il te plaît ?
Sinon por Xdialog, ça existe (encore) sous Fedora ? Il y a zenity qui est pas mal (simple avis).
Stiffler64
Désolé mais j'ai un souci de plus avec Fedora Core 6 en ce moment...
J'ai effectuer des mises à jours systèmes et du coup impossible d'avoir internet (je t'écris depuis l'école...)!
Donc pour le moment je ne peux pas te montrer mon script shell...
Pour internet je vais me débrouiller sur le forum je crois que c'est toi qui a aider NezEnMoins ce week-end et je le connais!
spirit
Stiffler64 wrote:sur Debian ça marche nikel, à l'appart il ne s'affiche rien
tu ve dire koi par appart
chez toi ???
alors c'est du à la conf du serveur X11 xorg
(la config pas défaut n'est pas la même sous Debian et sous Fedora)
Stiffler64 wrote:mises à jours système
yum update ???
ou yum update
kelkechose ???
put-tu nous donner la version de ton noyau
uname -r
SElinux était-il désactivé ??
si oui, vérifie s'il lé toujours
en espérant que ces conseils ton été utiles,
Stiffler64
C'est bon internet remarche,ouf!!
Bon j'ai désactivé SElinux qui étai activé mais ça ne marche toujours pas Xdialog! Que dois-je faire de plus?!?
Stiffler64
Que faut-il modifier dans le xorg.conf ???
Pikachu_2014
Apres verification, xdialog n'est pas present dans Fedora (il n'est pas obsolète, xdialog ??? Ce qui expliquerait son absence... Et peut-être le fait que tes scripts appelant xdialog pêchent un peu).
Inutile de bidouiller le xorg.conf, cela ferait plus de mal que de bien.
Toutefois, si ton programme marche avec dialog (qui lui est dispo. sous Fedora), tu peux être sûr qu'il fonctionnera avec xdialog (sous Debian).
De plus, est fourni avec Fedora gdialog (et aussi kdialog avec KDE) qui fonctionne de la même façon (exactement) que dialog (et xdialog a fortiori) : tu peux tester tes progs avec (en définissant dans ton programme une variable XDIALOG=gdialog et en subsituant tes appels à xdiualog par $XDIALOG ; sous debian, tu n'aurais qu'à donner à XDIALOG la valeur... xdialog :-D).
Est-ce que tes programmes avec dialog (seul) fonctionnent ?
Nota bene : gdialog est un script qui appelle zenity, pour compatibilité avec les vieux scripts qui l'appeleraient.
Post scriptum : si tu connais NezEnMoins, tu es aussi bordelais ! :pint:
Pikachu_2014 from Pessac.
Stiffler64
Oui je suis bordelais moi aussi!!!
En ce qui concerne dialog ça ne marche pas non plus sur fc6 et je ne sais pas l'installer!!! Saurais-tu par hasard m'aider?
Pikachu_2014
Effectivement, il faut s'assurer qu'il est installé. dialog est dans le paquet «dialog» :
# yum install dialog
s'il n'a pas été installé.
Stiffler64
Eh bien écoute dialog est déjà installé et ça ne marche toujours pas!!!
Je suis sûr de mon script puisqu'il marche à l'école, mais penses-tu que le fait de passer de Debian à Fedora puisse avoir une influence sur le fait que ça marche pas?!?
Pikachu_2014
A priori non : y a pas plus portable qu'un gentil script bash utilisé en simple user :-D.
Ceci dit cela m'intrigue au plus haut point.
Ne peux-tu vraiment pas poster ton script ?
Stiffler64
if ! test -f $stock ;
then dialog --msgbox "Création du fichier stock" 12 45 ;
touch stock.txt ;
exit 1;
fi
[...]
while true ;
do
dialog --stdout --title "GESTION DE STOCK DU PERE NOEL" --menu "" 0 0 5 \
1 Voir \
2 Ajouter \
3 Supprimer_un_article > tag ;
if test $? = 0 ;
then clu=`cat tag` ;
else Fin ;
fi
if test ${clu} = 1 ;
then ListeStock ;
fi
if test ${clu} = 2 ;
then Ajouter ;
fi
if test ${clu} = 3 ;
then Supprimer ;
fi
done
else Fin ;
Pikachu_2014
Et en ajoutant un she-bang (ou peu importe l'orthographe) en en-tête de ton fichier :
#!/bin/sh
Chez moi ça passe... comme une lettre au Père Noël :-D
Stiffler64
Ben écoute chez moi j'avais mis :
#!/bin/bash
et avec ce que tu me dis ça ne marche pas non plus!!!!!!!!!!!!!!!!!!!!!
quand je lance mon script dans le terminal la boîte de dialogue s'ouvre avec un gros carré gris et un "37%" en bas à droite!
je comprends pas qu'est ce que tu as fait de plus que moi?!?
j'ajoute que seul le bouton accepter apparaît!
Pikachu_2014
Ça tiens du surnaturel !
La seule modif. que j'ai fait a été de définir les fonctions Voir, Ajouter, Supprimer (qui affichent un bête message) et Fin (qui ne fait rien si ce n'est un «exit 0»), rien de plus et ça marche impec' ! :-o
Remarque : à la place des «test ${clu}», tu pourrais utiliser des «case ... esac» (mais je ne crois que ça change grand chose pour résoudre ton problème 🙁).
Peut être avec l'intégralité de ton script, de guerre lasse...
Stiffler64
[c] #!/bin/sh
#pere.sh
stock=/Desktop/TMnoel/stock.txt
#stock=/net/etd1/aguillem/ASR1/TMnoel/stock.txt
#chemin à changer suivant utilisation IUT/maison
if ! test -f $stock ;
then dialog --msgbox "Création du fichier stock" 12 45 ;
touch stock.txt ;
exit 1;
fi
Alerte()
{
dialog --msgbox "$alerte" 12 45 ;
return ;
}
# les fonctions---------------------
ListeStock()
{
cat $stock | tr ":" " " > stock.tmp
dialog --title "CONTENU DU FICHIER \"stock\"" --textbox stock.tmp 13 60 ;
return ;
}
Supprimer()
{
dialog --stdout --inputbox "Référence EXACTE de la commande :" 0 0 2> ref ;
r=`cat ref` ;
echo "Référence : ${r}" ;
grep "^${r}" $stock | cut -d `:` -f3 > qf ;
if test $? -ne 0 ;
then return;
fi
let qv=`cat qf` ;
if test ${qv} = 0 ;
then Alerte
echo"Référence ${r} indisponible" ;
else
let qvm=${qv}-1 ;
# mise à jour du fichier "stock" :
cp stock stock.tmp ;
sed -e "/^${r}/s/${qv}$/${qvm}/" stock.tmp > stock ;
rm stock.tmp ;
fi
return ;
}
Ajouter()
{
dialog --stdout --title "Référence" --inputbox Saisie 12 45 > ref;
dialog --stdout --title "Nom du cadeau" --inputbox Saisie 12 45 > nom;
dialog --stdout --title "Quantité" --inputbox Saisie 12 45 > qtte;
ref=`cat ref`
nom=`cat nom`
qtte=`cat qtte`
echo "$ref:$nom:$qtte" >> $stock;
return ;
}
Fin()
{
dialog --title "FIN de la GESTION DE STOCK" --infobox "Joyeux Noël !" 0 0 ;
exit 0 ;
}
# Action principale ----------------
while true ;
do
dialog --stdout --title "GESTION DE STOCK DU PERE NOEL" --menu "" 0 0 5 \
1 Voir \
2 Ajouter \
3 Supprimer_un_article > tag ;
if test $? = 0 ;
then clu=`cat tag` ;
else Fin ;
fi
if test ${clu} = 1 ;
then ListeStock ;
fi
if test ${clu} = 2 ;
then Ajouter ;
fi
if test ${clu} = 3 ;
then Supprimer ;
fi
done
else Fin ; [/c]
PS la fonction Supprimer ne arche pas mais le reste marche entièrement (enfin logiquement!)
Stiffler64
Euh bon je sais pas pourquoi mais mes mon dialog marche maintenant... par contre quand je lance mon script et que j'utilise la commande voir il apparait 3 messages d'erreur :
./pere.sh: line 96: test: =: unary operator expected
./pere.sh: line 99: test: =: unary operator expected
./pere.sh: line 102: test: =: unary operator expected
les lignes correspondent respectivement à :
if test ${clu} = 1 ;
if test ${clu} = 2 ;
if test ${clu} = 3 ;
apparemment il ne reconnaît pas le "=" mais je ne comprend pas pourquoi!
Pikachu_2014
Je pense avoir compris pourquoi ton programme ne fonctionne pas chez toi.
stock=/Desktop/TMnoel/stock.txt
#stock=/net/etd1/aguillem/ASR1/TMnoel/stock.txt
#chemin à changer suivant utilisation IUT/maison
if ! test -f $stock ;
then dialog --msgbox "Création du fichier stock" 12 45 ;
touch stock.txt ;
exit 1;
fi
Tu définis --- pour chez toi --- comme fichier de stockage :
stock=/Desktop/TMnoel/stock.txt
Or il n'y a pas de répertoire Desktop à la racine /
Tu voulais peut-être dire :
stock=~/Desktop/TMnoel/stock.txt
Après ça passe mieux.
J'ai modifié quelque peu ton script : il a l'air de marcher (sauf la fonction Supprimer :-D je peux pas tout faire non plus) :
http://pikachu.2014.free.fr/public/dialog/test2.sh
Stiffler64
C'est énorme tout marche merci infiniment tu peux pas savoir comment tu me sauve la vie !!!
Sans toi je devais passer mes vacances de Noël à Bordeaux loin de ma famille!
Merci Merci Merci Merci Merci Merci
n1ck0
bon je sais ce message est obsolète mais quand on fait un IF la condition doit etre entourée de [] ou (()) il me semble...
R.I.P. petit post