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 27/11/2020, à 16:05

Auguste19

[Résolu] lancer un script à partir d'un raccourci

Bonjour,
Je suis sous Lubuntu.
Sous root, j'ai mis le script ci-dessous dans un fichier "cartes_audio.sh" à cette adresse : /user/bin/cartes_audio.sh

#!/bin/bash
echo "liste des cartes son :"
pacmd list-sinks
pulseaudio --dump-conf

1) j'ai coché "rendre le script exécutable" dans l'onglet "Propriétés" du fichier, mais il ne s'exécute pas quand je clique dessus et que je choisi "exécuter" ou "ouvrir dans un terminal". Dans ce second cas, j'ai un message d'erreur :
"failed to execute child process "xterm" (aucun fichier ou dossier de ce type)"
2) je voudrais également créer un raccourci depuis le bureau pour lancer le script. Comment procéder ?

Dernière modification par Auguste19 (Le 29/11/2020, à 00:56)

Hors ligne

#2 Le 27/11/2020, à 16:15

abelthorne

Re : [Résolu] lancer un script à partir d'un raccourci

Dans /usr/bin, tu n'as pas les droits pour faire des modifs en tant qu'utilisateur normal, donc si tu as voulu rendre le script exécutable via les propriétés du fichier quand il était à cet endroit, c'est normal. Essaie avec les droits admin (sudo) :

sudo chmod +x /usr/bin/cartes_audio.sh

Ensuite, étant donné qu'il est dans un dossier du PATH, tu auras juste besoin de taper son nom pour le lancer :

cartes_audio.sh

Accessoirement, ce serait peut-être mieux de le mettre dans /usr/local/bin que dans /usr/bin pour un script perso.

Concernant le bureau, tu peux créer un raccourci mais ça ne va pas être très utile, étant donné que c'est un script qui ne fonctionnera que depuis un terminal. Et comme tu peux taper son nom directement, il n'y a pas vraiment d'intérêt à le mettre là. Mais si tu veux quand même le faire, tu peux créer un lien symbolique :

ln -s /usr/bin/cartes_audio.sh ~/Bureau/cartes_audio.sh

Hors ligne

#3 Le 27/11/2020, à 16:24

metalux

Re : [Résolu] lancer un script à partir d'un raccourci

Bonjour,

Dans le doute est-ce /usr/bin ou bien un dossier que tu as crées dans ton $HOME /user/bin. Car tu indiques /user et non /usr, c'est pour savoir si  abelthorne fait fausse route ou non.
S'il s'agit bien du second cas, je vois 2 choses de possible. Soit installer xterm, soit créer un lien symbolique xterm qui pointe vers lxterminal. Pour savoir ce que tu as actuellement:

ls -l /usr/bin/xterm

Hors ligne

#4 Le 27/11/2020, à 16:31

abelthorne

Re : [Résolu] lancer un script à partir d'un raccourci

(J'ai bien noté que c'était /user/bin mais je suis parti du principe que c'était une faute de frappe.)

Hors ligne

#5 Le 27/11/2020, à 16:35

metalux

Re : [Résolu] lancer un script à partir d'un raccourci

(oui je le suppose aussi vu que c'est précisé "Sous root" mais mieux vaut en être sûr wink )

Hors ligne

#6 Le 27/11/2020, à 18:25

kamaris

Re : [Résolu] lancer un script à partir d'un raccourci

@Auguste19 : Si tu es le seul utilisateur de ce script, tu devrais plutôt le mettre chez toi, dans $HOME/bin.

Hors ligne

#7 Le 27/11/2020, à 18:26

Auguste19

Re : [Résolu] lancer un script à partir d'un raccourci

Oui, c'est bien une erreur de syntaxe, désolé ! Il fallait bien lire "usr".

Sinon, j'ai fait les commandes conseillées par abelthorne (cmod puis le nom du fichier dans le terminal) mais j'ai un message d'erreur :
bash: /usr/bin/cartes_audio.sh : /user/bin/bash : mauvais interpréteur: Aucun fichier ou dossier de ce type
Du coup de je me demande si quelque chose cloche dans le Sheban que j'ai mis un peu au hasard dans le script, sans trop savoir si ça correspondait aux instructions.

Quant au raccourci, je précise que j'aimerais lancer le script et obtenir le résultat du script sans avoir à taper quoi que ce soit dans le terminal, sinon à quoi bon un raccourci en effet. Mais je ne sais pas si c'est possible.

Hors ligne

#8 Le 27/11/2020, à 18:31

Auguste19

Re : [Résolu] lancer un script à partir d'un raccourci

Si tu es le seul utilisateur de ce script, tu devrais plutôt le mettre chez toi, dans $HOME/bin.

@kamris :
Oui, en fait j'ai d'abord essayé de le mettre en tant que simple utilisateur, mais ça ne fonctionnait pas, j'ai pensé que root serait plus efficace : réaction naïve de débutant wink

Hors ligne

#9 Le 27/11/2020, à 18:38

abelthorne

Re : [Résolu] lancer un script à partir d'un raccourci

Auguste19 a écrit :

Sinon, j'ai fait les commandes conseillées par abelthorne (cmod puis le nom du fichier dans le terminal) mais j'ai un message d'erreur :
bash: /usr/bin/cartes_audio.sh : /user/bin/bash : mauvais interpréteur: Aucun fichier ou dossier de ce type
Du coup de je me demande si quelque chose cloche dans le Sheban que j'ai mis un peu au hasard dans le script, sans trop savoir si ça correspondait aux instructions.

Sheban ? EDIT : ah, apparemment tu parles du shebang (dont j'ignorais le nom), qui est le #! qu'il y a au début.

Il y a quand même un truc pas clair : est-ce que tu pourrais faire un copier/coller du message d'erreur que tu obtiens ? parce que ça me semble impossible qu'il te parle d'un /user/bin/bash, donc je suppose que tu l'as recopié en faisant à nouveau une faute de frappe. Et du coup, il y en a peut-être une supplémentaire, parce que ça devrait être /bin/bash (qui est déclaré au début). Et si c'est bien /bin/bash dont il se plaint, il y a un problème, ça signifierait que bash n'est pas installé sur ton système (alors qu'il l'est de base). Tandis que s'il se plaint de /usr/bin/bash, je ne comprends pas bien pourquoi il va le chercher là...

Au cas où, donne aussi le retour de :

cat /usr/bin/cartes_audio.sh

Dernière modification par abelthorne (Le 27/11/2020, à 19:39)

Hors ligne

#10 Le 27/11/2020, à 19:31

Auguste19

Re : [Résolu] lancer un script à partir d'un raccourci

Je suis un âne bâté !
Le message d'erreur est exactement ce que j'ai recopié en gras. Ce dont il se plaint c'est de l'entête du fichier que j'avais modifié après mon premier post. J'avais fait la même coquille que précédemment :  #!/user/bin/bash
Vraiment excusez-moi...
J'ai corrigé en #!/usr/bin/bash et maintenant le script affiche bien le résultat dans le terminal, mais il faut tout de même que je rentre les deux instructions manuellement : cmod et le nom du fichier.
Est-il possible de s'en passer pour qu'un simple clic affiche directement le résultat du script ?

Hors ligne

#11 Le 27/11/2020, à 19:38

abelthorne

Re : [Résolu] lancer un script à partir d'un raccourci

Auguste19 a écrit :

J'ai corrigé en #!/usr/bin/bash et maintenant le script affiche bien le résultat dans le terminal, mais il faut tout de même que je rentre les deux instructions manuellement : cmod et le nom du fichier.

Attention, c'est /bin/bash, pas /usr/bin/bash. En tout cas, sur Ubuntu, bash est dans /bin, pas /usr/bin.
Concernant le chmod, il n'est à faire qu'une fois, c'est pour rendre le script exécutable.

Est-il possible de s'en passer pour qu'un simple clic affiche directement le résultat du script ?

Tu veux dire en double-cliquant sur le script que tu as copié/lié sur ton bureau ? Non, parce que les commandes qu'il lance ne fonctionnent qu'en étant lancées depuis un terminal. Si tu le lances depuis l'interface graphique, il va simplement ne rien faire (enfin, il va exécuter les commandes dans le vide).
Ça devrait être possible de faire un lanceur qui ouvre automatiquement un terminal pour exécuter le script mais je ne suis pas sûr qu'il reste ouvert ensuite.

Dernière modification par abelthorne (Le 27/11/2020, à 19:41)

Hors ligne

#12 Le 27/11/2020, à 21:47

Auguste19

Re : [Résolu] lancer un script à partir d'un raccourci

Attention, c'est /bin/bash, pas /usr/bin/bash. En tout cas, sur Ubuntu, bash est dans /bin, pas /usr/bin.

Je viens de vérifier et je confirme, c'est bien "/usr/bin/bash". Par contre je vois qu'il y a un raccourci dans "usr" qui pointe vers "bin", peut-être que "/bin/bash" fonctionne aussi ? Sinon pourquoi ce raccourci ?

Concernant le chmod, il n'est à faire qu'une fois, c'est pour rendre le script exécutable.

Ok, je prends note, merci.

Ça devrait être possible de faire un lanceur qui ouvre automatiquement un terminal pour exécuter le script mais je ne suis pas sûr qu'il reste ouvert ensuite.

S'il y a une possibilité, j'essaierai volontiers. (L'idée est d'avoir un lanceur qui affiche rapidement un certain nombre de paramètres pour effectuer différents tests.)
Est-ce que xtem permettrait de faire cela ? (il n'est installé sur Lubuntu.)

Hors ligne

#13 Le 27/11/2020, à 21:54

abelthorne

Re : [Résolu] lancer un script à partir d'un raccourci

C'est bizarre cette histoire de raccourci : personnellement, dans /usr, bin est un dossier, pas un lien. Et dans /usr/bin, il n'y a aucun lien vers bash.

Pour un lanceur, essaie de créer un fichier texte comme ça (je crois que l'éditeur est leafpad si tu es sur Lubuntu, adapte si ce n'est pas le cas) :

leafpad ~/Bureau/cartes_audio.desktop

dans l'éditeur, colle ça :

[Desktop Entry]
Name=Cartes audio
Exec=cartes_audio.sh
Type=Application
Terminal=true

Enregistre. Rends-le exécutable au cas où (je ne sais plus si c'est indispensable) :

chmod +x ~/Bureau/cartes_audio.desktop

Tu devrais voir un "Cartes audio" sur le bureau. Double-clique dessus pour le lancer. Normalement, il devrait ouvrir un terminal mais il va peut-être se refermer aussitôt.

Concernant xterm, c'est un terminal basique. Il n'est pas vraiment utile, tu en as un autre plus performant d'installé (lxterminal).

Dernière modification par abelthorne (Le 27/11/2020, à 21:56)

Hors ligne

#14 Le 27/11/2020, à 22:35

Auguste19

Re : [Résolu] lancer un script à partir d'un raccourci

abelthorne a écrit :

C'est bizarre cette histoire de raccourci : personnellement, dans /usr, bin est un dossier, pas un lien. Et dans /usr/bin, il n'y a aucun lien vers bash.

Mea culpa :  en effet c'est un dossier, la petite flèche dans le coin supérieur gauche m'avait fait penser à un raccourci (mais que signifie cette flèche ?). Je découvre...
Donc finalement j'ai deux fichiers bash : /usr/bin/bash ET /bin/bash
Ils sont identiques dans leurs propriétés. Pourquoi deux ? Je ne comprends pas trop...

je vais tester ta solution lanceur, merci bien !

Hors ligne

#15 Le 27/11/2020, à 22:39

abelthorne

Re : [Résolu] lancer un script à partir d'un raccourci

Moi non plus, bash n'est pas censé être dans /usr/bin... Que donne le retour de cette commande ?

ls -l /usr/bin | grep bash

Hors ligne

#16 Le 27/11/2020, à 23:02

Auguste19

Re : [Résolu] lancer un script à partir d'un raccourci

abelthorne a écrit :

Tu devrais voir un "Cartes audio" sur le bureau. Double-clique dessus pour le lancer. Normalement, il devrait ouvrir un terminal mais il va peut-être se refermer aussitôt.

Oui, tout c'est passé comme prévu (avec featherpad comme éditeur), j'ai vu un terminal blanc, mais qui se referme en un éclair, comme tu l'avais prédit.
Bon, sinon j'ai vu dans la liste des terminaux "Zenity" pour faire des boîtes de dialogue. Je pourrais peut-être bricoler quelque chose à partir de ça ?

Hors ligne

#17 Le 27/11/2020, à 23:04

abelthorne

Re : [Résolu] lancer un script à partir d'un raccourci

Zenity peux faire des boîtes de diaglogue pour sélectionner des options, ce genre de chose, mais je ne pense pas que tu auras la possibilité d'avoir une sortie avec des commandes qui reste.

Hors ligne

#18 Le 28/11/2020, à 00:23

kamaris

Re : [Résolu] lancer un script à partir d'un raccourci

Pour la persistance du terminal, essaie ça dans le fichier .desktop :

[Desktop Entry]
Name=Cartes audio
Exec=sh -c 'cartes_audio.sh; bash'
Type=Application
Terminal=true

Hors ligne

#19 Le 28/11/2020, à 14:51

Auguste19

Re : [Résolu] lancer un script à partir d'un raccourci

kamaris a écrit :

Pour la persistance du terminal, essaie ça dans le fichier .desktop :

[Desktop Entry]
Name=Cartes audio
Exec=sh -c 'cartes_audio.sh; bash'
Type=Application
Terminal=true

Merci beaucoup, malheureusement la fenêtre se referme instantanément de la même manière.
Il semble qu'on touche à la limite de ce qu'on peut demander à un terminal, et qu'il faudrait programmer une petite application pour obtenir un affichage persistant et facile à recharger.

Je ne sais pas s'il existe l'équivalent de Visual Basic que j'ai utilisé sous Windows, je vois qu'il y a gambas sous Linux... Mais je ne connais pas du tout, et c'est peut-être disproportionné comme entreprise par rapport à l'enjeu. Disons que, dans l'absolu, ça m'intéresserait de pouvoir bricoler des outils graphiques qui permettent de se passer des lignes de commande, donc si vous avez des pistes je suis preneur.
Bon w.e. !

Hors ligne

#20 Le 28/11/2020, à 17:13

kamaris

Re : [Résolu] lancer un script à partir d'un raccourci

Non, ce que tu veux faire là est tout à fait basique, et je suis étonné que ce qui figure ci-dessus ne fonctionne pas.
Mais peut-être y a-t-il quelque chose de propre à Lubuntu, dans la manière de lire la ligne Exec= notamment, et aussi de lancer un terminal automatiquement.

Comme autre possibilité, puisque le terminal par défaut de Lubuntu ne semble pas avoir d'option de persistance, tu peux essayer d'installer xterm et de mettre ça dans le .desktop :

[Desktop Entry]
Name=Cartes audio
Exec=xterm -hold -e cartes_audio.sh
Type=Application
Terminal=false

Hors ligne

#21 Le 28/11/2020, à 20:54

Auguste19

Re : [Résolu] lancer un script à partir d'un raccourci

Je n'ai malheureusement plus le PC avec Lubuntu sous la main, c'est celui d'un ami que j'ai configuré pour lui pour une utilisation multimédia.

Mais j'ai testé les deux propositions sous "mint" et les deux instructions fonctionnent correctement dans le raccourci.
Dans les deux cas, je clique sur le raccourci, et un terminal s'ouvre avec le résultat du script cartes_audio et reste ouvert.

[Desktop Entry]
Name=Cartes audio
Exec=sh -c 'cartes_audio.sh; bash'
Type=Application
Terminal=true
[Desktop Entry]
Name=Cartes audio
Exec=xterm -hold -e cartes_audio.sh
Type=Application
Terminal=false

Je vais refaire une installation sur un vieux disque dur avec Lubuntu pour vérifier ce qu'il en est avec cet OS.
A suivre...

Hors ligne

#22 Le 28/11/2020, à 21:12

kamaris

Re : [Résolu] lancer un script à partir d'un raccourci

En fait, ce serait propre à l'environnement de bureau LXDE (ou sons successeur LXQt à partir d'Ubuntu 18.10), qui est ce qui différencie Lubuntu d'une autre variante.
Donc à priori, le même comportement devrait être observé sur toute distribution sur laquelle serait installé LXDE (à condition d'avoir affaire aux mêmes versions, évidemment).
Mais bon, le plus simple est probablement de refaire une install de Lubuntu si tu peux, effectivement.

Hors ligne

#23 Le 28/11/2020, à 21:28

Auguste19

Re : [Résolu] lancer un script à partir d'un raccourci

Bien, voilà le résultat après installation d'une autre version de Lubuntu toute neuve :
Le premier script avec le terminal par défaut Qterminal de Lubuntu est bien lancé mais le terminal n'est pas persistant.
Le second script avec Xterm comme terminal (que j'ai installé) fonctionne comme escompté : le résultat du script s'affiche et le terminal est persistant. Donc c'est bien un problème de terminal, ou d'option au lancement du terminal !
Bravo Kamaris !
En plus xterm s'affiche avec un meilleur contraste. On peut évidemment chercher ce qui clochait dans les options de Qterminal, mais en ce qui concerne mon objectif, Xterm me va tout a fait.

Encore merci pour vos contributions smile

Hors ligne

#24 Le 28/11/2020, à 21:35

kamaris

Re : [Résolu] lancer un script à partir d'un raccourci

Fiou ! Ça a pas trainé ! big_smile
Merci pour le retour. J'ai tendance à croire que le problème vient de la manière dont est décortiquée la ligne Exec= en interne.
Peut-être y aurait-il une solution en jouant sur les guillemets doubles ou simples, ou autre bidouille du même genre, mais bon, si ça te va comme ça, autant s'arrêter là.

Hors ligne

#25 Le 28/11/2020, à 22:37

Auguste19

Re : [Résolu] lancer un script à partir d'un raccourci

'ai tendance à croire que le problème vient de la manière dont est décortiquée la ligne Exec= en interne.
Peut-être y aurait-il une solution en jouant sur les guillemets doubles ou simples, ou autre bidouille du même genre,

Ce qui est quand même troublant, c'est que le premier script fonctionne sous mint et pas sous lubuntu, donc c'est lié au type même du terminal plus qu'à une syntaxe plus universelle sous Linux. Si tu as une suggestion, je peux tester... ma connaissance dans ce domaine étant quasiment inexistante, j'appliquerai aveuglément wink Sinon je mets résolu ?

Hors ligne