12 votes

rendre un script bash exécutable par programme

J'ai besoin de créer un script bash script pour créer et monter un lecteur. Donc, deux commandes simples. Toutes deux "fonctionnent" lorsqu'elles sont saisies dans la ligne de commande.

Le script est créé et exécuté chaque fois qu'un utilisateur normal se connecte, j'ai donc besoin d'une méthode pour rendre ce script exécutable à ce moment-là. Jusqu'à présent, je n'ai pas réussi à faire fonctionner cette méthode. Par exemple, la première partie mkdir /vvv/gggg ne procède pas parce que le script n'est pas exécutable (je suppose).

J'espère que cela a du sens. Est-ce possible ? Toute réflexion sur la manière de faire fonctionner ce système sera appréciée.

Update :

Merci pour vos réponses. Je devrais probablement ajouter quelques informations supplémentaires, outre le fait que je suis novice en matière de Linux.

J'utilise une application de bureau virtuel open source appelée Ulteo. Cette application fonctionne au-dessus d'Ubuntu et a très peu de support - c'est pourquoi je suis ici. En fait, j'apprends sur le tas.

L'application dispose donc d'une fonction de gestion des script de connexion qui me permet de lier un script à un utilisateur. Un simple script Windows avec utilisation du réseau fonctionne parfaitement. Cependant, lorsque j'essaie d'appliquer un script bash Linux, rien ne se passe.

Je pense que parce que j'ai besoin d'effectuer un chmod +x contre le script d'abord pour rendre le script exécutable, c'est pourquoi il échoue. Au fait, Ulteo fonctionne dans une prison chroot. J'ai créé un script, je l'ai sauvegardé et je n'ai pas trouvé le script. J'ai cherché à l'intérieur et à l'extérieur de la prison chroot.

J'aime l'approche de dan08 qui consiste à faire en sorte que le script initial fasse référence à un autre script que je peux trouver et rendre exécutable manuellement. Aurais-je le même problème ?

Ces informations supplémentaires clarifient-elles la situation ? Je vous remercie d'avance.

Photos jointes.

![login scipt management console][1]

![Windows scriptsqui fonctionnent][2]

![simple linux script qui ne fonctionne pas][3]

Désolé, je ne peux pas encore poster d'images

19voto

Steve Robbins Points 1783

Il y a deux choses à faire :

  1. Référence à l'interpréteur script au début du script :

    #!/bin/bash
  2. Définissez les autorisations pour qu'il soit exécutable :

    chmod +x myscript.sh

3voto

Dan Points 6405

Plutôt que de rendre votre script exécutable, vous pouvez adopter une approche différente et modifier la manière dont vous appelez le script.

script.sh suffit pour exécuter un script exécutable.

Cependant

Il est possible d'exécuter un script non exécutable si vous spécifiez le programme à exécuter.

Donc /bin/bash script.sh o bash script.sh o python script.py exécuteront tous des scripts non exécutables.

Ma suggestion serait donc de modifier la façon dont le script est appelé, et de spécifier le binaire utilisé pour l'exécuter.

0voto

Marv Points 113

Créez un programme en C, C++ ou Python, etc. et utilisez la commande système pour exécuter le script bash script.

Par exemple, un programme en C ressemblerait à ceci

#include "stdio.h"
int main(int argc, char const *argv[])
{
    system('chmod +x path/yourbashscript.sh');
    system('path/yourbashscript.sh');
    return 0;
}

Pour exécuter le programme au démarrage, ajoutez-le à la liste des programmes de démarrage. Ouvrez Startup Applications depuis votre tableau de bord et ajoutez l'exécutable compilé à la liste en cliquant sur le bouton "Ajouter".

0voto

LanceLafontaine Points 190

Vous pouvez rendre votre script bash exécutable en exécutant ce qui suit dans la ligne de commande.

cd ~/path/to/file
chmod +x nameoffile.sh

Ensuite, vous pouvez l'exécuter au démarrage en l'ajoutant à votre liste de programmes de démarrage comme l'a dit @akabhirav.

0voto

Jhosman Points 101

SHC est un compilateur générique Shell Shell. Il prend un Shell, qui est spécifié sur la ligne de commande et produit du code source C. Le code source généré est ensuite compilé et lié pour produire un binaire dépouillé.

Le binaire compilé dépendra toujours du Shell spécifié dans la première ligne du code Shell (le shebang) : #!/bin/sh ou autre), SHC ne crée donc pas de binaires complètement indépendants.

Le SHC lui-même n'est pas un compilateur tel que cc . Il encode et crypte plutôt un Shell Shell et génère un code source C avec la capacité d'expiration ajoutée. Il utilise ensuite le compilateur du système pour compiler un binaire dépouillé qui se comporte exactement comme le Shell original. Lors de l'exécution, le binaire compilé décrypte et exécute le code à l'aide de la fonction Shell. -c option.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X