Versuch, Dateien in einer Bildschirmsitzung von einem Server auf den anderen zu synchronisieren. Anstatt jedes Mal den langen Befehl zu schreiben, habe ich beschlossen, ein Bash-Skript einzufügen. Wenn ich es jedoch ausführe, wird eine Missing trailing-" in remote-shell command.
Fehlermeldung angezeigt.
Ich frage mich, was im Skript falsch läuft.
root@127.0.0.1:~# /raid/data/module/bin/rbk.sh Movies /raid/data/Movies rsync_target/
/raid/data/module/bin/screen -S Movies
/opt/bin/rsync --rsh="ssh -p 10022 -c des"\
--rsync-path="/opt/bin/rsync" --inplace --progress -a -vv \
/raid/data/Movies sys@192.168.1.15:/raid/data/rsync_target/
Missing trailing-" in remote-shell command.
rsync error: syntax or usage error (code 1) at main.c(361) [sender=3.0.5]
Das Skript gibt an, was es zuerst tun wird, und führt dann den Befehl aus. Unten ist ein Speicherauszug meines Skripts:
#!/bin/bash
SCREEN="/raid/data/module/bin/screen"
SCREENOPT="-S"
SCREEN_TITLE=$1
RSYNC="/opt/bin/rsync"
RSYNCOPT="--rsh=\"ssh -p 10022 -c des\" --rsync-path=\"/opt/bin/rsync\" --inplace --progress -a -vv"
SOURCE=$2
REMOTE_USER="sys@"
REMOTE_HOST="192.168.1.15"
REMOTE_BASE=":/raid/data/"
REMOTE_TARGET=$3
echo ${SCREEN} ${SCREENOPT} ${SCREEN_TITLE}
echo ${RSYNC} ${RSYNCOPT} ${SOURCE} ${REMOTE_USER}${REMOTE_HOST}${REMOTE_BASE}${REMOTE_TARGET}
${RSYNC} ${RSYNCOPT} ${SOURCE} ${REMOTE_USER}${REMOTE_HOST}${REMOTE_BASE}${REMOTE_TARGET}
run_rsync() { /opt/bin/rsync "--rsh=\"ssh -p 10022 -c des\" --rsync-path=\"/opt/bin/rsync\" --inplace --progress -a -vv" $1 $2 } run_rsync ${SOURCE} ${REMOTE_USER}${REMOTE_HOST}${REMOTE_BASE}${REMOTE_TARGET}
(Ich weiß, das ist ziemlich alt, aber immer noch eine der ersten Links bei der Suche nach "Missing trailing-" im Remote-Shell-Befehl ")Das Labyrinth von entkommenen und nicht entflohenen Anführungszeichen in Ihrem
$RSYNCOPT
verwirrt mich zum Teufel; Ich bin nicht überrascht, dass es rsync und / oder ssh und / oder die lokale oder entfernte Shell verwirrt.Es kann eine Möglichkeit geben, dies durch Hinzufügen oder Entfernen von Backslashes zum Laufen zu bringen, aber ich schlage stattdessen die folgende Problemumgehung vor:
Ersetzen:
durch:
Ich habe eine leicht vereinfachte Version Ihres Skripts auf meinem System ausprobiert und die gleiche Fehlermeldung wie Sie erhalten. Diese Problemumgehung hat es korrigiert.
quelle
Die Verwendung der SSH-Konfigurationsdatei ist ebenfalls eine gültige Option. Folgendes können Sie Ihrer
~/.ssh/config
Datei hinzufügen / hinzufügen :Sie können diese Parameter auch nach Remote-Host filtern, indem Sie diesen Zeilen voranstellen
Host xyz.domain.whatever
und sie einrücken :quelle