Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1600 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Substitution de variable lors d'exécution de script shell à distance

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Substitution de variable lors d'exécution de script shell à distance

n°1473903
iskor
Posté le 10-03-2022 à 11:36:34  profilanswer
 

Hello les guruz!
 
J'aurais besoin de votre aide.
Je dois installer des paquets sur un PC distant, via un script qui accepte un argument: l'utilisateur distant:
 

script.sh [user]


 
Dans ce script, j'ai des copies, des vérifs à droite à gauche, mais aussi la copie d'un script qui sera exécuté en sudo sur la machine distante, à l'aide d'un heredoc.
Or quand le script copie les infos du script distant, il interprète les variables, ce qui fait merder le script distant.
 
J'ai par exemple des fonctions de test pour savoir si un disque est monté ou pas:
 

cat <<EOF > remotescript.sh
isdevmounted () { findmnt --source "$1" >/dev/null; }
 
[...]
DISK='blkid |grep gnagna |cut -d ':' -f 1'
 
if isdevmounted ${DISK}; then
  echo "le disque est monté!"
fi
EOF


 
Ca ne fonctionne pas, puisque $1 est remplacé par le premier argument que j'ai passé au script, à savoir [user], et ma fonction "isdevmounted" devient
 

isdevmounted () { findmnt --source "[user]" >/dev/null; }


 
Est-ce qu'il y a un moyen de spécifier de NE PAS interpréter les variables?
 
Merci! :jap:


Message édité par iskor le 10-03-2022 à 11:37:04
mood
Publicité
Posté le 10-03-2022 à 11:36:34  profilanswer
 

n°1473904
kajoux
Posté le 10-03-2022 à 12:43:41  profilanswer
 

Oui, il faut mettre des guillemets autour de EOF :

cat <<'EOF' > remotescript.sh


Cf. man bash :

Citation :

      The format of here-documents is:
 
              [n]<<[-]word
                      here-document
              delimiter
 
       No parameter and variable expansion, command substitution, arithmetic expansion, or pathname expansion is performed on word.  If any part of word is quoted, the delimiter is the result of quote  re‐
       moval  on  word,  and the lines in the here-document are not expanded.

n°1473907
iskor
Posté le 10-03-2022 à 14:14:47  profilanswer
 

Ah ben oui, tout bêtement. Merci à toi! :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  Substitution de variable lors d'exécution de script shell à distance

 

Sujets relatifs
Récupérer les adresse IP avec un script BashAppeler une liste pour envoi SMS par script
[Bash] Passer un argument dans l'execution d'une commande à distanceAide Script d'installation de service (bash)
CURL ok exécuté manuellement mais pas ok en script ?Script bash configuration
Script qui s'arrête quand la connexion SSH est fermée[RESOLU] lire à distance ce qu'il y a dans /dev/fb0
[Bourne sh] Script 
Plus de sujets relatifs à : Substitution de variable lors d'exécution de script shell à distance


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR