expect rsync Fehler Workaround

Umgang mit Fehlern in expect, wenn rsync fehlschlägt

Wie man mit dem Fehler 'Missing trailing-in remote-shell command.rsync error syntax or usage error (code 1) at main.c(430) [sender=3.1.1]' umgeht, der auftritt, wenn expect zur Ausführung von rsync verwendet wird.

Shou Arisaka
2 Min. Lesezeit
19. Nov. 2025

Umgang mit Fehlern in expect, wenn rsync fehlschlägt

Bei der Verwendung von expect zur Ausführung von rsync können Fehler wie “Missing trailing-’ in remote-shell command. rsync error: syntax or usage error (code 1) at main.c(430) [sender=3.1.1]” auftreten. Dies erklärt die Ursache und Lösung für diesen Fehler.

Fehlerübersicht

Dies ist ein Fehler, den ich zwei Jahre lang ungelöst gelassen hatte, aber nach Recherchen fand ich eine Lösung. Wenn dieser Fehler auftritt, sehen Sie eine Nachricht wie diese:

Missing trailing-' in remote-shell command.
rsync error: syntax or usage error (code 1) at main.c(430) [sender=3.1.1]

Beispielcode, der den Fehler verursacht

Hier ist ein Beispiel für ein expect-Skript, das diesen Fehler erzeugt:

#!/usr/bin/expect -f
# exp_internal 1    ;# uncomment to turn on expect debugging
set timeout -1
spawn rsync -av -e 'ssh -p 10022 -i ~/.ssh/yuis.key' hoge.md [email protected]:~/yuis.xsrv.jp/public_html/_tmp
expect "Enter passphrase"
send "yourownpassword\n"
expect eof

Ursache

Die Ursache des Fehlers ist die Verwendung von einfachen Anführungszeichen im rsync-Befehl. Wenn einfache Anführungszeichen verwendet werden, kann rsync den Befehl möglicherweise nicht richtig interpretieren.

Referenzlinks:

Lösung

Durch Ändern der einfachen Anführungszeichen in doppelte Anführungszeichen können Sie den Fehler vermeiden. Hier ist der korrigierte Code:

#!/usr/bin/expect -f
# exp_internal 1    ;# uncomment to turn on expect debugging
set timeout -1
spawn rsync -av -e "ssh -p 10022 -i ~/.ssh/yuis.key" hoge.md [email protected]:~/yuis.xsrv.jp/public_html/_tmp
expect "Enter passphrase"
send "yourownpassword\n"
expect eof

Mit dieser Änderung sollte der rsync-Befehl normal ausgeführt werden.

Diesen Artikel teilen

Shou Arisaka 19. Nov. 2025

🔗 Links kopieren