Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 20/08/2015, à 17: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, à 11:04)

Hors ligne

#2 Le 20/08/2015, à 17: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, à 17:40)

Hors ligne

#3 Le 20/08/2015, à 18:02

jean-luc5629

Re : Passer une variable en ssh sur le serveur distant (1 script)[RESOLU]

pingouinux a écrit :

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, à 18: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, à 18:50

jean-luc5629

Re : Passer une variable en ssh sur le serveur distant (1 script)[RESOLU]

Hizoka a écrit :

si c'est bon ajoute un [Resolu] dans ton titre stp.

Merci; c'est fait...j'allais oublier.
smile

Hors ligne

#6 Le 01/09/2015, à 11: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, à 11:26)

Hors ligne

#7 Le 04/09/2015, à 17: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, à 18: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. sad

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.

En ligne

#9 Le 05/09/2015, à 14:13

jean-luc5629

Re : Passer une variable en ssh sur le serveur distant (1 script)[RESOLU]

Watael a écrit :

salut,

mais si, c'est possible !

apparemment, le here-doc s'exécute en local. sad

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'  smile

Je remets à résolu.

Hors ligne

#10 Le 06/09/2015, à 00: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 06/09/2015, à 00: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.

En ligne

#12 Le 06/09/2015, à 09:46

jean-luc5629

Re : Passer une variable en ssh sur le serveur distant (1 script)[RESOLU]

Watael a écrit :
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