Fusionner script shell et exécutable

Résolu/Fermé
chris79 Messages postés 91 Date d'inscription lundi 3 octobre 2005 Statut Membre Dernière intervention 1 février 2016 - 22 oct. 2009 à 21:25
chris79 Messages postés 91 Date d'inscription lundi 3 octobre 2005 Statut Membre Dernière intervention 1 février 2016 - 23 oct. 2009 à 11:39
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, ...)

4 réponses

foobar47 Messages postés 13531 Date d'inscription jeudi 9 janvier 2003 Statut Contributeur Dernière intervention 16 mai 2014 533
23 oct. 2009 à 09:23
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
dubcek Messages postés 18549 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 1 octobre 2022 5 556
23 oct. 2009 à 09:27
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
chris79 Messages postés 91 Date d'inscription lundi 3 octobre 2005 Statut Membre Dernière intervention 1 février 2016 25
23 oct. 2009 à 10:08
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
chris79 Messages postés 91 Date d'inscription lundi 3 octobre 2005 Statut Membre Dernière intervention 1 février 2016 25
23 oct. 2009 à 11:39
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