Essaye en remplaçant dans le fichier bash [mono];[/mono] par [mono];[/mono].
De mémoire le [mono][/mono] est uniquement utile dans un shell interactif.
Dans quelle situation ton script ne fonctionne pas ?
Quand tu le lances directement après l’avoir rendu exécutable, via une commande similaire à la suivante ?
$ ./mon-script.sh
Commence par ajouter cette ligne au début du script, pour indiquer qu’il doit être exécuté avec bash et regarde si ça change quelque chose :
#!/bin/bash
Au fait, j’ai déplacé ce fil dans la section « Programmation » pour attirer l’œil des codeurs.
“Ça ne fonctionne pas”, c’est un peu vague comme problème. Qu’attends-tu ? Quel est le retour ? As-tu un message d’erreur ? Lequel ?
Peux-tu donner le contenu exact de ton fichier script, avec les permissions associées ?
[quote=« vv222 »]Dans quelle situation ton script ne fonctionne pas ?
Quand tu le lances directement après l’avoir rendu exécutable, via une commande similaire à la suivante ?[/quote]
non, quand clique à droite sur le fichier dans l’explorateur et que je choisis « executer ».
[quote=« vv222 »]Commence par ajouter cette ligne au début du script, pour indiquer qu’il doit être exécuté avec bash et regarde si ça change quelque chose :
Code:
#!/bin/bash[/quote]
Pareil
[quote=“Dunatotatos”]“Ça ne fonctionne pas”, c’est un peu vague comme problème. Qu’attends-tu ? Quel est le retour ? As-tu un message d’erreur ? Lequel ?
Peux-tu donner le contenu exact de ton fichier script, avec les permissions associées ?[/quote]
Pas de message d’erreur, mais les permissions des fichiers ne sont pas changés par les commandes du fichier bash…
[quote=“Dunatotatos”]Via sudo, tu peux permettre à n’importe quel utilisateur de lancer une certaine commande.
Ou alors, tu lances ton script en tant que root.[/quote]
Ok mais je voulais dire sans passer par la console…
Il fonctionne comme sudo (ou su, selon l’implémentation), mais ouvre une fenêtre plutôt que de lire stdin.[/quote]
Je comprends pas trop. J’ouvre l’explorateur de fichier et comment je fais après?
Comme ton explorateur de fichier est exécuté en user simple, ton script doit acquérir les droits root. Pour ça, les commandes qui nécessitent le droit root doivent être précédées de “gksu”.
Un exemple vite fait.
Ce script ressemble à ce que tu as écrit pour le moment :
$ cat script.sh
#!/bin/sh
ls /root
Si tu l’exécutes en tant que simple user, tu as des problèmes de droits :
$ ./script.sh
ls: cannot open directory /root: Permission denied
Si tu l’exécutes en tant que root, ça marche :
# ./script
iptables.sh
L’idée est donc de récupérer les droits root au sein de ton script, même lorsqu’il est exécuté en simple user :
$ cat script.sh
#!/bin/sh
su -c 'ls /root'
$ ./script.sh
Password: #Ici, on tape le mot de passe root
iptables.sh
Ça marche aussi avec sudo :
$ cat script.sh
#!/bin/sh
sudo ls /root
$ ./script.sh
[sudo] password for dunatotatos: #Ici, on tape le mot de passe de l'utilisateur simple
iptables.sh
Le problème est que la demande de mot de passe se fait dans un terminal. Tu veux tout faire en graphique, donc il faut demander le mot de passe dans une interface graphique. gksu fait ça :
$ cat script.sh
#!/bin/sh
gksu ls /root
$ ./script.sh #Juste après le lancement, une fenêtre s'ouvre demandant le mot de passe root
iptables.sh
[quote=“Dunatotatos”]
Le problème est que la demande de mot de passe se fait dans un terminal. Tu veux tout faire en graphique, donc il faut demander le mot de passe dans une interface graphique. gksu fait ça :
$ cat script.sh
#!/bin/sh
gksu ls /root
$ ./script.sh #Juste après le lancement, une fenêtre s'ouvre demandant le mot de passe root
iptables.sh[/quote]
Oui mais c’est toujours en console, je peux pas le faire directement dans l’explorateur nan?
Avant de t’acharner à lancer ton script en interface graphique, utilise ta console. L’un des trucs les plus agaçants avec une interface graphique est le manque de feedback. Il y a manifestement une erreur dans ton script, mais l’interface graphique la cache. En console, elle est clairement écrite.
Une fois que ton script marche parfaitement, tu peux le lancer en cliquant dessus.
sudo cd ce n’est pas possible
En revanche faire ton ‘cd’ sans sudo ça devrait fonctionner.
Mais comme on te l’a dit utilise gksu à la place de sudo et tu pourras démarrer ton script depuis ton navigateur.