リモートサーバへのファイル転送が成功しません。
何が原因かご指摘いただけませんでしょうか?
# 手動実行なら成功します。
/home/uuu/a/put.sh
sh /home/uuu/a/put.sh
# ところが、cronで実行すると リモートホストへの rsync が成功しません。
crontab -e
* * * * * /home/uuu/a/put.sh
リモートホストへはパスワード入力なしでssh接続できています。
Ubuntu 8.04 (Windows XP上のVirtualbox)
test.sh --------------
#!/bin/bash
export USER=uuu
export DIR=a
export FROM=/home/${USER}/${DIR}/
export TO=${USER}@s74.coreserver.jp:/virtual/${USER}/${DIR}/
# これが成功しません。
rsync -avz ${FROM} ${TO}
# 環境変数は正しく見えます。
echo "rsync -avz ${FROM} ${TO}" > /home/uuu/a/put.log
# パスも通っています。
which rsync >> /home/uuu/a/put.log
# 実行ユーザも正しく見えます。
whoami >> /home/uuu/a/put.log
# ローカルなら正しくrsyncされます。
date +%T >> /home/uuu/a/put.log
rsync -avz /home/uuu/a/ /home/uuu/b/
--------------
何が悪いのでしょうか?
tail /var/log/syslog
Feb 28 00:05:01 ubuntusv /USR/SBIN/CRON[19362]: (uuu) CMD (/home/uuu/a/put.sh)
Feb 28 00:06:01 ubuntusv /USR/SBIN/CRON[19389]: (uuu) CMD (/home/uuu/a/put.sh)
...
メールは導入されていないので、エラーが見えません。
メール以外でエラーを確認する方法はございますでしょうか?
外部に配信されていないだけで、導入されていないってことは無いでしょう。
それはともかく、
rsync -avz ${FROM} ${TO} >> /tmp/rsync.log 2>&1
とでもすればエラーも含めてファイルに書き込まれます。
ssh接続が成功したかを確認する方法をご存知でしょうか?
接続先サーバーの認証ログを見れば良い。
大抵は /var/log/secure とか。
ローカルPC内ではrsyncするので権限はあるのではないでしょうか?
よくあるのはログイン実行時と CRON 実行時の環境変数の違い。
rsync のオプションを以下に変えてみたらどうなります?
rsync -avz -e ssh ${FROM} ${TO}
あとこれでも解決しないなら、エラーがメールで送信されているはずなのでそちらを確認してください。
ありがとうございます。
rsync -avz -e ssh ${FROM} ${TO}
にしてみましたが、成功しませんでした。
sh put.sh
では成功します。
メールは導入されていないので、エラーが見えません。
メール以外でエラーを確認する方法はございますでしょうか?
メールは導入されていないので、エラーが見えません。
メール以外でエラーを確認する方法はございますでしょうか?
外部に配信されていないだけで、導入されていないってことは無いでしょう。
それはともかく、
rsync -avz ${FROM} ${TO} >> /tmp/rsync.log 2>&1
とでもすればエラーも含めてファイルに書き込まれます。
ssh接続が成功したかを確認する方法をご存知でしょうか?
接続先サーバーの認証ログを見れば良い。
大抵は /var/log/secure とか。
ありがとうございます!
>>とでもすればエラーも含めてファイルに書き込まれます。<<
こんな便利な方法があるんですね。
ばっちり出ました。
cat /tmp/rsync.log Permission denied, please try again. Permission denied, please try again. Permission denied (publickey,password,keyboard-interactive). rsync: connection unexpectedly closed (0 bytes received so far) [sender] rsync error: unexplained error (code 255) at io.c(454) [sender=2.6.9]
意味調べてみます。
取り急ぎ返信まで。
接続先サーバの ls /var/log/ は Permission denied でした。
ありがとうございます!
>>とでもすればエラーも含めてファイルに書き込まれます。<<
こんな便利な方法があるんですね。
ばっちり出ました。
意味調べてみます。
取り急ぎ返信まで。
接続先サーバの ls /var/log/ は Permission denied でした。