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.

#1 Le 18/06/2010, à 19:04

Caocoa

Actions conditionnée au succès ou à l'échec d'aria

Bonjour !
Je cherche une astuce qui me permette d'exécuter comS ou comE en fonction du succès ou de l'échec d'une commande COM.

Par exemple, j'utilise un programme pour encoder une vidéo en un format. Si ça réussit j'affiche sur ma console "ok, réussi" et si ca bogue je renvoie à un tuto internet.

Une manière de contourner le problème serait de chainer des commandes, par exemple

COM && comS

mais comment faire pour incorporer comE ?
On pourrait aussi utiliser un script, mais je ne vois pas quoi utiliser.

Qui pourrait m'indiquer comment faire smile ?
Bonnes vacances, bon bac !

P.S. : je sais que le titre est nul mais il faut moins de 70 caractères et c'est le seul qui me passait par la tête.

Dernière modification par Caocoa (Le 19/06/2010, à 00:30)


[url=http://[Merci de relire les règles]/29k82ap]Ma configuration[/url]
[url=http://[Merci de relire les règles]/2749u6z]l'Hadopi[/url] : l'Homme à Abattre Détesté Ouvertement Par tout Internaute
Une solution rationnelle proposée : l'infolibéralisme (ce n'est pas moi)

Hors ligne

#2 Le 18/06/2010, à 20:00

nesthib

Re : Actions conditionnée au succès ou à l'échec d'aria

commande_initiale && commande_si_succes || commande_si_echec

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#3 Le 18/06/2010, à 20:55

Caocoa

Re : Actions conditionnée au succès ou à l'échec d'aria

Pas mal ! big_smile
Quelle maitrise du shell ! Quelle puissance dans la ligne de commande ! cool
Et si j'ai aria par exemple à la place de COM comment récupérer l'état de réussite ?
Est-ce que quelqu'un sait comment récupérer le statut d'aria2C ? le manuel indique plusieurs retours possible, mais ou les trouver ?

Dernière modification par Caocoa (Le 18/06/2010, à 21:33)


[url=http://[Merci de relire les règles]/29k82ap]Ma configuration[/url]
[url=http://[Merci de relire les règles]/2749u6z]l'Hadopi[/url] : l'Homme à Abattre Détesté Ouvertement Par tout Internaute
Une solution rationnelle proposée : l'infolibéralisme (ce n'est pas moi)

Hors ligne

#4 Le 18/06/2010, à 21:34

Totor

Re : Actions conditionnée au succès ou à l'échec d'aria

Bonsoir,

nesthib a écrit :
commande_initiale && commande_si_succes || commande_si_echec

Ce n'est pas tout à fait exacte.
En effet, commande_si_echec sera également exécutée si commande_si_succes est en échec.
Pour exemple :

$[ 1 -eq 1 ] && [ 1 -eq 0 ] || echo 'pas de bol !'
pas de bol !

-- Lucid Lynx --

Hors ligne

#5 Le 18/06/2010, à 21:40

Caocoa

Re : Actions conditionnée au succès ou à l'échec d'aria

Merci de ta précision Totor.
On peut donc vraiment assimiler l'opérateur && à un ET logique.
Mais pour appliquer cela j'aurai besoin d'éxécuter un gestionnaire de téléchargement qui s'apelle aria2c (ou aria), puis récupérer son "exit statut" et en fonction de ce dernier agir de telle ou telle manière.

Dernière modification par Caocoa (Le 18/06/2010, à 21:41)


[url=http://[Merci de relire les règles]/29k82ap]Ma configuration[/url]
[url=http://[Merci de relire les règles]/2749u6z]l'Hadopi[/url] : l'Homme à Abattre Détesté Ouvertement Par tout Internaute
Une solution rationnelle proposée : l'infolibéralisme (ce n'est pas moi)

Hors ligne

#6 Le 21/06/2010, à 14:42

Caocoa

Re : Actions conditionnée au succès ou à l'échec d'aria

Up wink


[url=http://[Merci de relire les règles]/29k82ap]Ma configuration[/url]
[url=http://[Merci de relire les règles]/2749u6z]l'Hadopi[/url] : l'Homme à Abattre Détesté Ouvertement Par tout Internaute
Une solution rationnelle proposée : l'infolibéralisme (ce n'est pas moi)

Hors ligne

#7 Le 21/06/2010, à 15:03

nesthib

Re : Actions conditionnée au succès ou à l'échec d'aria

tu as tout ce qu'il te faut là, non ?
le && n'agit pas comme un OU logique mais plutôt comme un if ; then :

si tu veux faire simple

if aria; then
    …
else
    …
fi

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#8 Le 21/06/2010, à 16:01

Caocoa

Re : Actions conditionnée au succès ou à l'échec d'aria

Pour la théorie oui, mais quand aria bug la commande d'échec ne s'effectue pas.
Pour contourner le problème il faudrait un truc comme ça :

Exécuter aria ;
Récupérer le statut de fin.
Si statut = 0
     alors ok : faire ceci ;
Sinon
     faire cela ;

Mais je ne sais pas comment récupérer ce statut ;( Le manuel renvoie :

EXIT STATUS

Because aria2 can handle multiple downloads at once, it encounters lots of errors in a session. aria2 returns the following exit status based on the last error encountered.

0    If all downloads are successful.
1    If an unknown error occurs.
2    If time out occurs.
3    If a resource is not found.
4    If aria2 sees the specfied number of "resource not found" error. See --max-file-not-found option).
5    If a download aborts because download speed is too slow. See --lowest-speed-limit option)
6    If network problem occurs.
7    If there are unfinished downloads. This error is only reported if all finished downloads are successful and there are unfinished downloads in a queue when aria2 exits by pressing Ctrl-C by an user or sending TERM or INT signal.
8    If server does not support resume when resume is required to complete download.

Note
    An error occurred in a finished download will not be reported as exit status.


[url=http://[Merci de relire les règles]/29k82ap]Ma configuration[/url]
[url=http://[Merci de relire les règles]/2749u6z]l'Hadopi[/url] : l'Homme à Abattre Détesté Ouvertement Par tout Internaute
Une solution rationnelle proposée : l'infolibéralisme (ce n'est pas moi)

Hors ligne

#9 Le 21/06/2010, à 16:05

AnsuzPeorth

Re : Actions conditionnée au succès ou à l'échec d'aria

Bjr,

Caocoa a écrit :
Exécuter aria ;
Récupérer le statut de fin.
Si statut = 0
     alors ok : faire ceci ;
Sinon
     faire cela ;

C'est exactement ce que nesthib t'a donné ... Tu as essayé ?

Si tu veux récupérer la sortie de la commande

commande
sortie=$?

Dernière modification par AnsuzPeorth (Le 21/06/2010, à 16:07)


Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#10 Le 21/06/2010, à 16:07

Caocoa

Re : Actions conditionnée au succès ou à l'échec d'aria

Je ne peux pas !
Sinon j'aurai essayé ! Je ne sais pas comment on fait pour récupérer le statut hmm

Ah ; je ne sais pas si tu as rajouté sortie=$ en edit. Je ne l'avais pas vu la première fois.
Comment s'en sert-on ?
J'ai essayé

aria2c http://www.*.fr && sortie=$?
aria2c http://www.*.fr
sortie=$?
aria2c http://www.*.fr
sortie=$1
aria2c http://www.*.fr
sortie=$

mais rien ne sort. Tu peux m'aider (encore une fois hmm ) ?

EDIT :
1) Je précise que la commande donnée à aria retourne une erreur.
2) Fusion de deux messages pour éviter le double-post

Dernière modification par Caocoa (Le 21/06/2010, à 16:17)


[url=http://[Merci de relire les règles]/29k82ap]Ma configuration[/url]
[url=http://[Merci de relire les règles]/2749u6z]l'Hadopi[/url] : l'Homme à Abattre Détesté Ouvertement Par tout Internaute
Une solution rationnelle proposée : l'infolibéralisme (ce n'est pas moi)

Hors ligne

#11 Le 21/06/2010, à 16:18

AnsuzPeorth

Re : Actions conditionnée au succès ou à l'échec d'aria

Caocoa a écrit :

Je ne peux pas !
Sinon j'aurai essayé ! Je ne sais pas comment on fait pour récupérer le statut hmm

La solution de nesthib est la bonne.

if aria2c http://www.*.fr; then
action si ok
else
action si no ok
fi

Pour récup la sortie

aria2c http://www.*.fr
sortie=$?

Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#12 Le 21/06/2010, à 16:36

Caocoa

Re : Actions conditionnée au succès ou à l'échec d'aria

Merci de vous occuper si rapidement de mon cas big_smile
C'est bien à écrire dans un script ! Je testais directement en console : c'est pour ça que je ne comprenais pas yikes
J'écris en console

 sh ARIA

où ARIA est un fichier qui contient :

aria2c http://www.*.fr ;
sortie=$? ;
echo sortie
if sortie=0
then
echo "Yahou !" ; # action si ok
else
echo "Paglop :/" ; # action si no ok
fi ;

Ca me renvoie

2010-06-21 16:34:37.040570 ERROR - CUID#6 - Téléchargement stoppé;. URI=http://www.*.fr
Exception: [AbstractCommand.cc:195] URI=http://www.*.fr
  -> [AbstractCommand.cc:493] CUID#6 - La résolution du nom pour www.*.fr a échoué:Domain name not found

Résultats du téléchargement:
gid|stat|avg speed  |path/URI
===+====+===========+===========================================================
  1| ERR|        n/a|http://www.*.fr

Légende du statut:
(ERR):error occurred.

aria2c va recommencer ce téléchargement si le transfert est relancé.
En cas d'érreurs, merci de lire le fichier log. Voir l'option '-l' pour plus d'informations.
sortie
Yahou !

A moitié bon, ou à moitié faux, ça dépend…

EDIT : Désolé de ces longs messages…

J'ai modifié ARIA :

aria2c http://www.*.fr 
sortie=$? 
echo sortie
if sortie = 0
then
echo "Yahou !" ; # action si ok
else
echo "Paglop :/" ; # action si no ok
fi ;

et ça me renvoie

caocoa@C40C04:~$ sh ARIA

2010-06-21 16:38:09.435214 ERROR - CUID#6 - Téléchargement stoppé;. URI=http://www.*.fr
Exception: [AbstractCommand.cc:195] URI=http://www.*.fr
  -> [AbstractCommand.cc:493] CUID#6 - La résolution du nom pour www.*.fr a échoué:Domain name not found

Résultats du téléchargement:
gid|stat|avg speed  |path/URI
===+====+===========+===========================================================
  1| ERR|        n/a|http://www.*.fr

Légende du statut:
(ERR):error occurred.

aria2c va recommencer ce téléchargement si le transfert est relancé.
En cas d'érreurs, merci de lire le fichier log. Voir l'option '-l' pour plus d'informations.
sortie
ARIA: 9: sortie: not found
Paglop :/

J'ai essayé en mettant http://www.google.fr en argument d'aria donc ca aurait dû me renvoyer "Yahou !" mais non :

caocoa@C40C04:~$ sh ARIA

2010-06-21 16:39:34.988282 NOTICE - Téléchargement terminé: /home/caocoa/index.html

Résultats du téléchargement:
gid|stat|avg speed  |path/URI
===+====+===========+===========================================================
  1|  OK|        n/a|/home/caocoa/index.html

Légende du statut:
 (OK):download completed.
sortie
ARIA: 9: sortie: not found
Paglop :/

Problème de variable ?

Dernière modification par Caocoa (Le 21/06/2010, à 16:43)


[url=http://[Merci de relire les règles]/29k82ap]Ma configuration[/url]
[url=http://[Merci de relire les règles]/2749u6z]l'Hadopi[/url] : l'Homme à Abattre Détesté Ouvertement Par tout Internaute
Une solution rationnelle proposée : l'infolibéralisme (ce n'est pas moi)

Hors ligne

#13 Le 21/06/2010, à 16:48

AnsuzPeorth

Re : Actions conditionnée au succès ou à l'échec d'aria

Bon, pour commencer, je pense qu'un peut de lecture sur les scripts bash ne te ferais pas de mal ....
http://abs.traduc.org/abs-5.3-fr/index.html

Sinon, utilse ce que nesthib t'as proposé, c'était le plus simple ... (ca fait que 3 fois que je le dis smile)

if aria2c http://www.*.fr; then
echo "Yahou !" ; # action si ok
else
echo "Paglop :/" ; # action si no ok
fi

Sinon, pour faire comme tu veux (avec les = 0)

aria2c http://www.*.fr 
sortie=$? 
echo $sortie
if [[ "$sortie" == 0 ]]
then
echo "Yahou !" ; # action si ok
else
echo "Paglop :/" ; # action si no ok
fi

Interface graphique pour bash, python ou autre: glade2script
Support Tchat: http://chat.jabberfr.org/muckl_int/inde … ade2script  (Hors ligne)

Hors ligne

#14 Le 21/06/2010, à 16:51

nesthib

Re : Actions conditionnée au succès ou à l'échec d'aria

pour comprendre un peu mieux ce que je t'ai proposé plus haut essaye de lancer (et comprendre) ce script :

echo test1

touch fichier_qui_existe
if ls fichier_qui_existe; then
    echo le fichier existe la commande1 est lancée
else
    echo le fichier n\'existe pas la commande2 est lancée
fi

echo test2
if ls fichier_qui_n_existe_pas_et_declenche_une_erreur; then
    echo le fichier existe la commande1 est lancée
else
    echo le fichier n\'existe pas la commande2 est lancée
fi

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#15 Le 21/06/2010, à 17:15

Caocoa

Re : Actions conditionnée au succès ou à l'échec d'aria

lol C'est sûr qu'il y a une différence de niveau…
Il faudra que j'aille voir plus souvent le lien de la signature de AnsuzPeorth.
Sinon pour répondre à AnsuzPeorth cela fait peut-être trois fois que tu me le dit mais comme je ne savais pas que les = 0 pouvaient être sous-entendus, j'avais peu de chances de comprendre.

Heureusement que j'ai deux mois de vacances ! Go to Site du Zéro parce que visiblement il n'y a plus que ça pour moi wink

Mes malheurs continuent : quand j'entre

aria2c http://www.google.fr ;
sortie=$? 
echo $sortie ;
if [[ "$sortie" == 0 ]]
then
echo "Yahou !" ; # action si ok
else
echo "Paglop :/" ; # action si no ok
fi

il me renvoie :

caocoa@C40C04:~$ sh ARIA

2010-06-21 17:32:11.426581 NOTICE - Téléchargement terminé: /home/caocoa/index.html

Résultats du téléchargement:
gid|stat|avg speed  |path/URI
===+====+===========+===========================================================
  1|  OK|        n/a|/home/caocoa/index.html

Légende du statut:
 (OK):download completed.
0
ARIA: 9: [[: not found
Paglop :/

Bizarre hmm Pourquoi Aria s'amuse-t-il à considérer [[ comme argument alors qu'il y a plusieurs ; et un if ?
J'ai même mis "aria2c bla" dans un fichier et la suite des instructions dans un autre mais ça n'a pas marcher.

D'autre part je pense que pour généraliser le truc on peut entrer sh ARIA adresse et remplacer dans le code l'adresse $1, non ?

Dernière modification par Caocoa (Le 21/06/2010, à 17:56)


[url=http://[Merci de relire les règles]/29k82ap]Ma configuration[/url]
[url=http://[Merci de relire les règles]/2749u6z]l'Hadopi[/url] : l'Homme à Abattre Détesté Ouvertement Par tout Internaute
Une solution rationnelle proposée : l'infolibéralisme (ce n'est pas moi)

Hors ligne

#16 Le 21/06/2010, à 18:25

nesthib

Re : Actions conditionnée au succès ou à l'échec d'aria

t'es têtu hein… pourquoi tu t'obstines avec les [[ ]] alors qu'un if commande suffit amplement ? tongue

sinon que te donne :

aria2c http://www.google.fr ;
echo $?

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#17 Le 21/06/2010, à 18:39

Caocoa

Re : Actions conditionnée au succès ou à l'échec d'aria

Le retour de

aria2c http://www.google.fr ;
echo $?

est :

caocoa@C40C04:~$ sh ARIA-1

2010-06-21 18:38:37.226429 NOTICE - Le fichier existe déjà. Renommé en /home/caocoa/index.html.

2010-06-21 18:38:37.286108 NOTICE - Téléchargement terminé: /home/caocoa/index.html.

Résultats du téléchargement:
gid|stat|avg speed  |path/URI
===+====+===========+===========================================================
  1|  OK|        n/a|/home/caocoa/index.html.9

Légende du statut:
 (OK):download completed.
0

La solution que tu proposes marche bien :

if aria2c http://www.*.fr
then
echo "Yahou !" ; # action si ok
else
echo "Paglop :/" ; # action si no ok
fi

renvoie "Yahou !" si l'adresse est correcte et "Paglop hmm" sinon.

Mais si par exemple je veux associer une action au statut 1 ou 2, ne fait comment ? J'ai essayé

if aria2c http://www.*.fr -1
…

avec la commande d'aria entouré ou non de [[ ]] (encore eux !) mais que dalle ! le shell m'envoie paître sad

Dernière modification par Caocoa (Le 21/06/2010, à 19:05)


[url=http://[Merci de relire les règles]/29k82ap]Ma configuration[/url]
[url=http://[Merci de relire les règles]/2749u6z]l'Hadopi[/url] : l'Homme à Abattre Détesté Ouvertement Par tout Internaute
Une solution rationnelle proposée : l'infolibéralisme (ce n'est pas moi)

Hors ligne

#18 Le 21/06/2010, à 20:09

nesthib

Re : Actions conditionnée au succès ou à l'échec d'aria

rapidos

ta_commande
case $? in
    0) echo commande réussie ;;
    1) echo erreur de type 1 ;;
    2) echo erreur de type 2 ;;
    *) echo autre erreur ;;
esac

GUL Bordeaux : GirollServices libres : TdCT.org
Hide in your shell, scripts & astuces :  applications dans un tunnelsmart wgettrouver des pdfinstall. auto de paquetssauvegarde auto♥ awk
  ⃛ɹǝsn xnuᴉꞁ uʍop-ǝpᴉsdn

Hors ligne

#19 Le 21/06/2010, à 21:54

Caocoa

Re : Actions conditionnée au succès ou à l'échec d'aria

Puissant le bash ! Je ne pensais pas que le switch étais si simple à mettre en œuvre.


[url=http://[Merci de relire les règles]/29k82ap]Ma configuration[/url]
[url=http://[Merci de relire les règles]/2749u6z]l'Hadopi[/url] : l'Homme à Abattre Détesté Ouvertement Par tout Internaute
Une solution rationnelle proposée : l'infolibéralisme (ce n'est pas moi)

Hors ligne