web-dev-qa-db-fra.com

faire un script bash exécutable par programme

J'ai besoin de créer un script bash pour créer et monter un lecteur. Donc, deux commandes simples. Les deux "fonctionnent" lorsqu'ils sont entrés en 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'ici, je ne peux pas obtenir que cela fonctionne. Par exemple, la première partie mkdir /vvv/gggg ne continue pas car le script n'est pas exécutable (je suppose).

J'espère que cela a du sens. Est-ce possible? Toute pensée sur la façon de faire ce travail sera appréciée.

Mise à jour:

Merci pour vos réponses. Je devrais probablement ajouter des informations supplémentaires à part le fait que je suis nouveau sur Linux.

J'utilise une application de bureau virtuel open source appelée Ulteo. Cette application fonctionne sur Ubuntu et a très peu de soutien - c'est pourquoi je suis ici. En gros, j'apprends par le feu.

L’application dispose donc d’une fonction de gestion de script de connexion permettant de lier un script à un utilisateur. Un script Windows simple avec Net Use fonctionne parfaitement. Cependant, lorsque j'essaie d'appliquer un script bash Linux, rien ne se passe.

Je pense qu'étant donné que je dois d'abord exécuter un chmod +x contre le script pour le rendre exécutable, c'est pourquoi il échoue. Au fait, Ulteo est détenu dans une prison pour chroot. J'ai créé un script, je l'ai enregistré et je n'ai pas trouvé le script. J'ai fouillé à l'intérieur et à l'extérieur de la prison pour chroot.

J'aime l'approche de dan08 pour que le script initial fasse référence à un autre script que je peux trouver et rendre exécutable manuellement. Est-ce que je rencontrerais le même problème?

Ces informations supplémentaires clarifient-elles la situation? Merci d'avance.

Photos ci-jointes.

! [login scipt management console] [1]

! [scripts Windows qui fonctionnent] [2]

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

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

11
HIlton Dynamics

Il y a deux choses à faire:

  1. Référencez l'interprète de script au début du script:

    #!/bin/bash
    
  2. Définissez les autorisations pour le rendre exécutable:

    chmod +x myscript.sh
    
18
Ed Manet

Plutôt que de rendre votre script exécutable, vous pouvez adopter une approche différente et changer la façon dont vous appelez le script.

script.sh est suffisant 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 pour l'exécuter.

Donc, /bin/bash script.sh ou bash script.sh ou python script.py exécutera 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.

2
Dan

SHC est un compilateur de script shell générique. Il faut un script, qui est spécifié sur la ligne de commande et produit le code source C. Le code source généré est ensuite compilé et lié pour produire un fichier binaire épuré.

Le fichier binaire compilé dépendra toujours du shell spécifié dans la première ligne du code du shell (Shebang: #!/bin/sh ou similaire), de sorte que SHC ne crée pas de fichiers binaires complètement indépendants.

SHC lui-même n'est pas un compilateur tel que cc. Encode et chiffre plutôt un script Shell et génère du code source C avec la capacité d’expiration ajoutée. Il utilise ensuite le compilateur système pour compiler un fichier binaire épuré se comportant exactement comme le script d'origine. Lors de l'exécution, le binaire compilé décrypte et exécute le code avec l'option -c du shell.

0
Jhosman

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

Par exemple, un programme 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 les applications de démarrage à partir de votre tableau de bord et ajoutez l'exécutable compilé à la liste en cliquant sur le bouton Ajouter.

0
akabhirav

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

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

Vous pouvez ensuite le faire exécuter au démarrage en l’ajoutant à votre liste de programmes de démarrage, comme @akabhirav l’a dit.

0
LanceLafontaine