メモ:Maildirを転送する
以前もこんなエントリ書いたような気がするけど、、、、
# rsync -nauv --password-file=xxx . remoteserver:パス
とかは実行できるのに、どうしたことか、コマンドラインから実行される下記のようなbashの1行スクリプトの中ではrsyncの--passord-fileのオプションが効かないので、expectを使うことになった。引数の扱いが変わるんだっけか?(環境:CentOS4.4 kernelは2.6.9-42.ELsmp)
# awk -F: '{print $6}' /etc/passwd | while read u do if [ -d "$u/Maildir" ] then echo "$u has mailbox" rsync -nauv --password-file=xxx $u remoteserver:$u fi done
以下、expectを使ったbashスクリプト
#!/bin/bash EXPECT=expectのパス TMP=`mktemp` function cleanup() { for f in $TMP do if [ -f "$f" ] then rm -f $f fi done } trap cleanup EXIT function sync() { echo "set timeout 600" > $TMP echo "spawn rsync -auv --delete $u remoteserver:$u" >> $TMP echo "expect word" >> $TMP echo "send \"パスワード\\n\"" >> $TMP echo "expect #" >> $TMP $EXPECT -f $TMP } awk -F: '{print $6}' /etc/passwd | while read u do if [ -d "$u/Maildir" ] then echo "$u has mailbox" sync fi done