lancer une commande depuis mon script bash

Ma commande est introuvable sur mon système

L'auteur de ce sujet a trouvé une solution à son problème.
Staff
Auteur du sujet

Bonjour j'essaye actuellement de réaliser un script bash. Dans lequel j'essaye de lancer une commande censée me donner les informations sur l'OS sur lequel je suis. Je fais donc ceci :

1
2
3
4
#!/bin/bash
### Verification du systeme cible ###
 dist=`lsb_release -i`
 echo "Disctribution : $dist"

Mais j'obtiens une erreur lsb_release Command not found.

Je me suis dit que c'est peut-être mon lsb qui est foireux, sauf que même en remplaçant par un simple ls -l j'ai la même erreur.

Quelqu'un a une idée ? En sachant que je l'ai lancé depuis un système Redhat sur une machine Vagrant. Pas encore testé sur un autre OS.

Mon script complet ci-dessous.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
#!/bin/bash
 
#Set Script Name variable
SCRIPT=`basename ${BASH_SOURCE[0]}`
 
#Initialize variables to default values.
OPT_URL_REPO="https://github.com/zestedesavoir/zds-site.git"
OPT_BRANCH="dev"
 
#Set fonts for Help.
NORM=`tput sgr0`
BOLD=`tput bold`
REV=`tput smso`
 
#Help function
function HELP {
echo -e \\n"Documentation du script ${BOLD}${SCRIPT}.${NORM}"\\n
echo -e "${REV}Utilisation basique:${NORM} ${BOLD}$SCRIPT /opt/${NORM}"\\n
echo "Les options sont optionels. Les seules options reconnues sont les suivantes :"
echo "${REV}-u${NORM} --Modifie la valeur de l'option ${BOLD}url${NORM}. La valeur par defaut est: ${BOLD}https://github.com/zestedesavoir/zds-site.git${NORM}."
echo "${REV}-b${NORM} --Modifie la valeur de l'option ${BOLD}branch${NORM}. La valeur par defaut est: ${BOLD}dev${NORM}."
echo -e "${REV}-h${NORM} --Affiche le message d'aide. Aucune autre fonction n'est executee."\\n
echo -e "Exemple: ${BOLD}$SCRIPT -u https://github.com/zestedesavoir/zds-site.git -b dev /opt/${NORM}"\\n
exit 1
}
 
#Check the number of arguments. If none are passed, print help and exit.
NUMARGS=$#
echo -e \\n"Nombre d'arguments: $NUMARGS"
if [ $NUMARGS -eq 0 ]; then
HELP
fi
 
### Start getopts code ###
 
#Parse command line flags
#If an option should be followed by an argument, it should be followed by a ":".
#Notice there is no ":" after "h". The leading ":" suppresses error messages from
#getopts. This is required to get my unrecognized option code to work.
 
while getopts :u:b:h FLAG; do
case $FLAG in
u) #set option "url"
OPT_URL_REPO=$OPTARG
echo "-u utilise: $OPTARG"
echo "OPT_REPO_URL = $OPT_URL_REPO"
;;
b) #set option "branch"
OPT_BRANCH=$OPTARG
echo "-b utilise: $OPTARG"
echo "OPT_BRANCH = $OPT_BRANCH"
;;
h) #show help
HELP
;;
\?) #unrecognized option - show help
echo -e \\n"Option -${BOLD}$OPTARG${NORM} non permise."
HELP
#If you just want to display a simple error message instead of the full
#help, remove the 2 lines above and uncomment the 2 lines below.
#echo -e "Use ${BOLD}$SCRIPT -h${NORM} to see the help documentation."\\n
#exit 2
;;
esac
done
 
shift $((OPTIND-1)) #This tells getopts to move on to the next argument.
 
### End getopts code ###
 
while [ $# -ne 0 ]; do
PATH=$1
echo -e "Installation de ZDS dans le repertoire : $PATH sur $OSTYPE"\\n
 
### Verification du système cible ###
dist=`lsb_release -i`
echo "Distribution : $dist"
 
shift #Move on to next input file.
done
 
exit 0

Je viens de tester le petit bout initial sur un Ubuntu ca marche nickel avec ls -l. Du coup on peut éliminer un souci de syntaxe et plutôt se concentrer sur un problème d'environnement non ?

EDIT : +1 pour mon vdd, j'avais pas lu tout le code du coup ma remarque est bancal

Édité par Eskimon

ZdS, le best du Zeste ! Tuto Arduino, blog, etc

+0 -0

Ton petit script fonctionne sous Debian Wheezy :) Par contre, j'ai la même erreur pour le script complet. Lorsque je met le chemin absolu /usr/bin/lsb_release, ça fonctionne :) !

Edit : Il semble que lsb_release ne fasse pas partie d'une installation de RedHat par défaut. Donc, double problème avec la même erreur : la varible PATH, et la commande réellement absente

Édité par bendia

+0 -0
Staff

[HS] Vu l'objectif du script, ne serait ce pas plus pertinent de le faire en python que tu maitrise probablement mieux ? Il est installé sur 95% des distribs et est de toute façon un pré-requis essentiel au projet.

+0 -0
Staff
Auteur du sujet

À mon avis, c'est potentiellement parce qu'une de tes variables s'appelle PATH. Faudrait tester, mais ça pourrait foutre la merde avec la variable d'environnement.

lethom

Merci lethom, c'était ça mon problème. Ma variable PATH modifiait le chemin.

Merci bien à vous tous.

[HS] Vu l'objectif du script, ne serait ce pas plus pertinent de le faire en python que tu maitrise probablement mieux ? Il est installé sur 95% des distribs et est de toute façon un pré-requis essentiel au projet.

Kje

Bah python est peut-être installé presque partout, mais vu que j'aimerai que mon script m'installe aussi la bonne version de python si besoin j'ai pas trop le choix.

Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte