expect rsync エラー 対処法

expectでrsyncがエラーになる場合の対処法

expectを使用してrsyncを実行する際に発生するエラー「Missing trailing-in remote-shell command.rsync error syntax or usage error (code 1) at main.c(430) [sender=3.1.1]」の対処法について紹介します。

Shou Arisaka
1 分で読める
2019年2月8日

expectでrsyncがエラーになる場合の対処法

expectを使用してrsyncを実行する際に、「Missing trailing-’ in remote-shell command. rsync error: syntax or usage error (code 1) at main.c(430) [sender=3.1.1]」といったエラーが発生することがあります。このエラーの原因と対処法について説明します。

エラーの概要

2年前から放置していたエラーですが、調べた結果、解決方法が見つかりました。このエラーが発生する場合、次のようなメッセージが表示されます。

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

エラー発生時のコード例

以下は、エラーが発生するexpectスクリプトの例です。

#!/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

原因

エラーの原因は、rsyncコマンド内で使用しているシングルクォーテーションにあります。シングルクォーテーションを使用すると、rsyncがコマンドを正しく解釈できないことがあります。

参考リンク:

解決法

シングルクォーテーションをダブルクォーテーションに変更することで、エラーを回避できます。修正後のコードは以下の通りです。

#!/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

これで、rsyncコマンドが正常に実行されるようになります。

この記事をシェア

Shou Arisaka 2019年2月8日

🔗 リンクをコピー