Fusionner script shell et exécutable

Résolu
chris79 Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   -  
chris79 Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
Imaginons un script shell tout simple qui lance 2 exécutables l'un après l'autre du genre :

#!/bin/bash
./exeNumero1;
./exeNumero2;

J'aimerai fournir à l'utilisateur final un seul et unique fichier qui combine les exécutables et le script (en sachant que je ne possède pas les codes sources des exécutables :-) ).
Ainsi le fichier obtenu pourrait être lancé à partir de n'importe quel endroit de l'arborescence.

L'objectif ici est de ne pas donner en argument du script les chemins des exécutables et même de s'affranchir de leurs présences puisqu'ils seraient directement intégrés au fichier binaire !

Quelqu'un sait il si cela est possible ??

Merci pour votre aide.
(Je prends toutes les éventuelles solutions...Shell, langage C, ...)
Configuration: Windows Vista/Linux Debian Lenny
Firefox 3.5.3/Google Chrome

4 réponses

  1. foobar47 Messages postés 13654 Statut Contributeur 534
     
    Hello,

    Si tu crées un package qui va installer les fichiers au bon endroit et que tu ajoutes l'emplacement dans le PATH, peut-être pourras-tu lancer ton fichier depuis n'importe quel endroit ?

    Est-ce clair ?
    A+
    0
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 659
     
    hello
    il faut convertir les exécutables en ascii avec base64, placer le texte dans le script et recréer les binaires. Evidemment, l'ascii peut être gros,

    # on convertit les exécutables en ascii
    base64 exeNumero1 > exe1.base64
    base64 exeNumero2 > exe2.base64

    # dans le script:
    cat << EOF > exe1.base64
    ## ici contenu du fichier exe1.base64, du genre :
    f0VMRgEBAQAAAAAAAAAAAAIAAwABAAAAEIMECDQAAABsFwAAAAAAADQAIAAIACgAJ
    AAAANIAECDSABAgAAQAAAAEAAAUAAAAEAAAAAwAAADQBAAA0gQQINIEECBMAAAAT
    AAABAAAAAAAAAACABAgAgAQIwAQAAMAEAAAFAAAAABAAAAEAAAAMDwAADJ8ECAy
    ...
    EOF
    cat << EOF > exe2.base64
    ## ici contenu du fichier exe2.base64
    EOF

    # on recrée les binaires
    base64 -d exe1.base64 > exeNumero1
    base64 -d exe2.base64 > exeNumero2
    chmod u+x exeNumero[12]

    # on peut les exécuter
    ./exeNumero1;
    ./exeNumero2;
    0
  3. chris79 Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   25
     
    Merci à vous deux pour vos réponses.
    La solution 1 est certes intéressante mais nécessite la présence de plusieurs fichiers sur le PC....je voudrais éviter cela...je veux vraiment un seul et unique "exécutable", sans aucun pré-requis (PATH) sur le PC hôte (limite je pourrais l'exécuter à partir d'une clé USB quelconque sur un PC quelconque....).

    La solution 2 me parait être ce que je cherche.....je vais voir ce que je peux en faire.....
    Je vous tiens au courant.
    Encore merci !
    0
  4. chris79 Messages postés 91 Date d'inscription   Statut Membre Dernière intervention   25
     
    Salut,
    après quelques tests, cette dernière solution me permet de recréer mes exécutables à l'endroit où se trouve le script.
    Je les exécute, puis les efface pour revenir à l'arborescence d'origine.
    C'est simple et transparent pour l'utilisateur final, parfait !
    Un grand merci à vous deux.
    A bientôt.
    0