- Published on
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]」といったエラーが発生することがあります。このエラーの原因と対処法について説明します。
エラーの概要
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 yuis@sv2031.xserver.jp:~/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 yuis@sv2031.xserver.jp:~/yuis.xsrv.jp/public_html/_tmp
expect "Enter passphrase"
send "yourownpassword\n"
expect eof
これで、rsyncコマンドが正常に実行されるようになります。
- Authors
- Name
- Shou Arisaka / 有坂 翔
- 情報技術者 / Z世代プログラマー / 米大学院にてデータサイエンスを学ぶ
- ITプロフェッショナルとして活動しています。React.js等のモダンなウェブ制作・アプリ開発を得意としており、Java・Python・Rust等のプログラミング言語を用いたソフトウェア開発全般を行っています。
- Github 🐙StackOverflow 🔥Qiita 📝
- TechFreeTools 🔧About.me 👤