我有一个 bash 脚本,用于迁移从配置文件读取的一些 IMAP 邮件帐户。
它适用于单行条目,但是当我有多个帐户时,只有第一个条目有效,其余的由于某种原因删除了用户名的第一个字符。我用来暂停和等待击键的命令也没有暂停。(我可以调试那部分,但如果我不需要,我肯定会支持你!)
我 99% 确定我的问题是我不完全理解的唯一一行:
CREDS=(${VAR// / })
同样值得注意的是密码充满了特殊字符,但没有空格。这是代码:
#! /bin/bash
# Script to help migrate email account contents
# must have accounts all ready set up and using IMAP
# uses hardcoded dovecot master user on host2 too bad host1 is stupid courier
# uses file mailusers.cfg for users and passwords
# one entry per line - format is:
# username@domain.com passwordstring
while read p; do
VAR=$p
CREDS=(${VAR// / })
VARUSER=${CREDS[0]}
VARPASS=${CREDS[1]}
OUTPUT="Username: $VARUSER Password: $VARPASS"
echo $OUTPUT
imapsync --host1 123.456.789.123 --user1 $VARUSER --password1 $VARPASS --authmech1 PLAIN --host2 999.888.777.123 --user2 $VARUSER*masteruser@mydomain.com --password2 notreallypasswordXD --authmech2 PLAIN --exclude 'Trash|Spam'
echo "Done!"
echo
read -n 1 -s
done < mailusers.cfg
注意:这个脚本不应该在其他用户登录的系统上运行,因为如果他们碰巧运行 ps aux 我相信他们可以看到用户名/密码。有关详细信息,请参阅 imapsync 文档。