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 10/04/2017, à 01:55

abach

Bash - passer le port en paramètre à rsync

Bonjour à tous et à toutes,

Dans un script bash, pour downloader mes sites Internet en rsync, je dois passer le port en paramètre dans une fonction. En effet, j'ai l'un ou l'autre sites où le port actif pour rsync n'est pas le port 22.

Or cette fonction devrait marcher dans tous les cas de https://forum.ubuntu-fr.org/img/fluxtoo … .pngfigure..

La fonction, la voici :

site-ssh()
{
    echo "rsync"
	echo "rsync --progress -arzvl --delete-after --exclude-from=$5 -e 'ssh -p $3' $2 $1/"		
	rsync --progress -arzvl --delete-after --exclude-from=$5 -e 'ssh -p $3' $2/ $1/
}

L'echo me renvoie bien ce que j'attends :

rsync --progress -arzvl --delete-after --exclude-from=/home/abach/scripts/svg_s.exclude -e 'ssh -p 1234' utilisateur@site.com: /home/abach/En-cours/today/nomdusite/

mais l'exécution du rsync proprement dit me retourne

Bad port '$3'
rsync: connection unexpectedly closed (0 bytes received so far) [Receiver]
rsync error: unexplained error (code 255) at io.c(226) [Receiver=3.1.1]

Et là, j'avoue que je suis battu.

Si quelqu'un a une idée, je lui en suis par avance reconnaissant.


Les chiens vous regardent tous avec vénération. Les chats vous toisent tous avec dédain. Il n’y a que les cochons qui vous considèrent comme leurs égaux. - Winston Churchill
Je suis parrain Linux

Hors ligne

#2 Le 10/04/2017, à 03:50

Watael

Re : Bash - passer le port en paramètre à rsync

salut,

as-tu essayé
de remplacer les apostrophes par des guillemets ?
de mettre le troisième paramètre positonnel en dehors des apostrophes :

rsync ... -e 'ssh -p '$3 2$2/ $1/

?

parce que, de toute évidence, il n'est pas interprété.


Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#3 Le 10/04/2017, à 05:50

abach

Re : Bash - passer le port en paramètre à rsync

Salut,

Non je n'ai pas essayé car j'ai tout simplement regardé ma syntaxe de rsync qui demande les simples quotes comme ça


Les chiens vous regardent tous avec vénération. Les chats vous toisent tous avec dédain. Il n’y a que les cochons qui vous considèrent comme leurs égaux. - Winston Churchill
Je suis parrain Linux

Hors ligne

#4 Le 10/04/2017, à 07:59

michel_04

Re : Bash - passer le port en paramètre à rsync

Bonjour,

Watael a écrit :

de remplacer les apostrophes par des guillemets ?

abach a écrit :

Non je n'ai pas essayé car j'ai tout simplement regardé ma syntaxe de rsync qui demande les simples quotes comme ça

Tu devrais essayer.

A+

Hors ligne

#5 Le 10/04/2017, à 12:32

MicP

Re : Bash - passer le port en paramètre à rsync

Bonjour

echo "rsync --progress -arzvl --delete-after --exclude-from=$5 -e 'ssh -p $3' $2 $1/"


L'echo me renvoie bien ce que j'attends :

rsync --progress -arzvl --delete-after --exclude-from=/home/abach/scripts/svg_s.exclude -e 'ssh -p 1234' utilisateur@site.com: /home/abach/En-cours/today/nomdusite/

Je ne vois pas du tout comment le paramètre $3 aurait pu avoir été interprété alors qu'il est dans une chaîne située entre des caractères apostrophes.

EDIT : Voir message suivant

et c'est d'ailleurs confirmé par ce que te retourne le message d'erreur :


mais l'exécution du rsync proprement dit me retourne

Bad port '$3'

=======

michel@debg53sw:~$ echo 'Le compte utilisateur est $USER'
Le compte utilisateur est $USER
michel@debg53sw:~$ echo "Le compte utilisateur est $USER"
Le compte utilisateur est michel
michel@debg53sw:~$ 

=======
https://abs.traduc.org/abs-5.0-fr/ch05.html

Dernière modification par MicP (Le 10/04/2017, à 13:21)

Hors ligne

#6 Le 10/04/2017, à 12:55

Watael

Re : Bash - passer le port en paramètre à rsync

MicP a écrit :

Je ne vois pas du tout comment le paramètre $3 aurait pu avoir été interprété alors qu'il est dans une chaîne située entre des caractères apostrophes.

parce qu'il est d'abord entre guillemets :

$ myFunc() { echo "bla '$1'";}
$ myFunc poipoi
bla 'poipoi'

Connected \o/
Welcome to sHell. · eval is evil.

Hors ligne

#7 Le 10/04/2017, à 13:20

MicP

Re : Bash - passer le port en paramètre à rsync

Merci Watael

Il va me falloir faire plus attention avant de poster, surtout en ce moment (situation de stress => manque de concentration)
Mais manque de concentration ou pas, je ne savais pas que les variables pouvaient êtres interprétées dans ce contexte.
J'apprécie énormément tes messages qui en si peu de mots me permettent de voir de suite ce qui me manque.

Dernière modification par MicP (Le 10/04/2017, à 14:04)

Hors ligne