#1 Le 20/08/2015, à 16:29
- jean-luc5629
Passer une variable en ssh sur le serveur distant (1 script)[RESOLU]
Bonjour;
Je casse la tête avec un truc qui m'échappe :
Avec ce type de lignes dans mon script, j'arrive à tout passer :
ip="000.000.000.000" #variable récupérée
ssh -p 59761 root@monserveur.com 'bash -s' < script.sh $ip
Mais ça m'oblige de créer un autre script avec toutes mes commandes, je préfèrerais le faire en un seul script (surtout pour comprendre !!).
J'ai testé ceci :
ip="000.000.000.000" #variable récupérée
ssh -p 59761 root@monserveur.com <<'EOF'
echo "$ip" >/tmp/ip
# + mes autres commandes
EOF
Toutes mes commandes sont exécutées sur le serveur distant, le fichier /tmp/ip est bien créé, mais hélas vide...la variable ne passe pas..
Une idée ...
Merci.
Dernière modification par jean-luc5629 (Le 06/09/2015, à 10:04)
Hors ligne
#2 Le 20/08/2015, à 16:40
- pingouinux
Re : Passer une variable en ssh sur le serveur distant (1 script)[RESOLU]
Bonjour,
Pour que "$ip" prenne la bonne valeur, il ne faut pas mettre <<'EOF' ni <<"EOF", mais <<EOF
Dernière modification par pingouinux (Le 20/08/2015, à 16:40)
Hors ligne
#3 Le 20/08/2015, à 17:02
- jean-luc5629
Re : Passer une variable en ssh sur le serveur distant (1 script)[RESOLU]
Bonjour,
Pour que "$ip" prenne la bonne valeur, il ne faut pas mettre <<'EOF' ni <<"EOF", mais <<EOF
C'est tout à fait çà...en googolant pour rechercher avant j'étais tombé sur un script ressemblant et dans lequel il y avait 'EOF'...
Encore merci..
Hors ligne
#4 Le 20/08/2015, à 17:36
- Hizoka
Re : Passer une variable en ssh sur le serveur distant (1 script)[RESOLU]
si c'est bon ajoute un [Resolu] dans ton titre stp.
KDE Neon 64bits
Tous mes softs (MKVExtractorQt, HizoSelect, HizoProgress, Qtesseract, Keneric, Services menus...) sont sur github
Hors ligne
#5 Le 20/08/2015, à 17:50
- jean-luc5629
Re : Passer une variable en ssh sur le serveur distant (1 script)[RESOLU]
si c'est bon ajoute un [Resolu] dans ton titre stp.
Merci; c'est fait...j'allais oublier.
Hors ligne
#6 Le 01/09/2015, à 10:25
- jean-luc5629
Re : Passer une variable en ssh sur le serveur distant (1 script)[RESOLU]
Bonjour;
Je ré-ouvre le sujet car, j'ai finalement toujours un petit soucis avec ce script :
1° cas :
ip="000.000.000.000" #variable récupérée domicile
ssh -p 59761 root@monserveur.com <<EOF
ip2=`sed -n 25p /etc/monfichier-ip` #variable présente sur le serveur
if ! [ "$ip" = "$ip2" ];then
# + mes autres commandes
fi
EOF
La variable ip n'est pas vide mais la variable ip2 reste vide alors que si j'exécute directement la commande ip2 ne l'est pas...
2° cas :
ip="000.000.000.000" #variable récupérée domicile
ssh -p 59761 root@monserveur.com <<'EOF'
ip2=`sed -n 25p /etc/monfichier-ip` #variable présente sur le serveur
if ! [ "$ip" = "$ip2" ];then
# + mes autres commandes
fi
EOF
La variable ip est toujours vide mais la variable ip2 ne l'est plus...
Comment passer les 2 variables (une relevée côté domicile et l'autre côté serveur) dans ce même script..???
Merci
Dernière modification par jean-luc5629 (Le 01/09/2015, à 10:26)
Hors ligne
#7 Le 04/09/2015, à 16:58
- jean-luc5629
Re : Passer une variable en ssh sur le serveur distant (1 script)[RESOLU]
Visiblement, c'est impossible...
En 2 scripts j'y arrive en passant la 1° ip ($ip) dans le 1° script exécuté en local en argument au lancement du 2° script local mais exécuté sur le serveur qui lui trouve $ip2.
Tant pis..
Merci.
Hors ligne
#8 Le 04/09/2015, à 17:33
- Watael
Re : Passer une variable en ssh sur le serveur distant (1 script)[RESOLU]
salut,
mais si, c'est possible !
apparemment, le here-doc s'exécute en local.
var=123
ssh nomServeur 'hostname
var2=$(sed -n 25p fichier.distant)
echo '"$var"'" -- $var2"
'
nomServeur
123 -- data_fichier.distant
attention aux apostrophes et aux guillemets.
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#9 Le 05/09/2015, à 13:13
- jean-luc5629
Re : Passer une variable en ssh sur le serveur distant (1 script)[RESOLU]
salut,
mais si, c'est possible !
apparemment, le here-doc s'exécute en local.
var=123 ssh nomServeur 'hostname var2=$(sed -n 25p fichier.distant) echo '"$var"'" -- $var2" ' nomServeur 123 -- data_fichier.distant
attention aux apostrophes et aux guillemets.
Merci,
à me faire chier avec mes EOF ou mes 'EOF'
Je remets à résolu.
Hors ligne
#10 Le 05/09/2015, à 23:03
- jean-luc5629
Re : Passer une variable en ssh sur le serveur distant (1 script)[RESOLU]
Bonsoir;
Je ré-ouvre...
Fonctionne impeccablement pour les 2 variables, mais du coup ça me provoque un autre problème dans le script (ligne qui fonctionnait avant !!) :
var=123
ssh nomServeur 'hostname
var2=$(sed -n 25p fichier.distant)
sed '64,$d' /autre fichier distant #supprime de la 64° ligne à la fin
'
La ligne de commande avec sed chargée de supprimer toutes les lignes d'un fichier après la 63° ligne ne fonctionne plus et génère l'erreur suivante :
sed: -e expression n°1, caractère 3: `,' inattendue
et pourtant cette ligne fonctionnait avant (méthode EOF, mais Pb de variables) ???
Sinon toutes mes autres lignes avec sed pas de soucis comme par exemple :
sed -i "15d;14aALL: '"$var"'"" /etc/hosts.allow
Sans doute un Pb de " ou de ' ???? j'ai testé mais ne vois pas..
Merci.
Hors ligne
#11 Le 05/09/2015, à 23:24
- Watael
Re : Passer une variable en ssh sur le serveur distant (1 script)[RESOLU]
sed "64,\$d" /autre_fichier
Connected \o/
Welcome to sHell. · eval is evil.
Hors ligne
#12 Le 06/09/2015, à 08:46
- jean-luc5629
Re : Passer une variable en ssh sur le serveur distant (1 script)[RESOLU]
sed "64,\$d" /autre_fichier
Mais bien sur, avec des " il me fallait échapper le $ avec \ ....en plus ce genres de conneries, ça m'est déjà arrivé..
sed -i "64,\$d" /autre fichier distant
Merci, cette fois ci je clos une fois pour toutes ...c'était le dernier os a mon script qui est fonctionnel maintenant.
Hors ligne