sendEmail:Linux脚本和数组

时间:2012-04-21 23:11:03

标签: linux bash sendmail

我有一个使用sendEmail(CentOS shell)发送电子邮件的脚本 脚本是:

sendEmail -vvv -u "TestCompany, Inc.: USB Added" -f user@domain.com -t To@domain.com -s ASPMX.L.GOOGLE.com -m "USB Activity" -o tls=aut
o username=user3@domain.com password=password

到目前为止一切正常。

现在我按如下方式创建一个ConfigFile:

Company=TestCompany, Inc.
FromEmail=user@domain.com
Password=password
ToEmail=To@domain.com
Smtp=ASPMX.L.GOOGLE.com

现在我修改我的脚本如下:

#!/bin/sh
i=1;
while IFS="=" read VAR VALUE
do
        VAR="${VAR// }"
        Values[$i]=${VALUE}
        let i++;
done <  ConfigFile

sendEmail -vvv -u "${Values[1]}: USB Added" -f ${Values[2]} -t ${Values[4]} -s ${Values[5]} -m "Test Email" -o tls=auto username=${Values[2
]} password=${Values[3]}

我收到以下错误:

'25 failed: IO::Socket::INET: Bad hostname 'ASPMX.L.GOOGLE.comempt to ASPMX.L.GOOGLE.com
Apr 21 12:11:35 box2 sendEmail[26378]: HINT => Try specifying a different mail relay with the -s option.

现在我无法理解为什么我会收到此错误。即使我尝试回显值,它也会显示正确的值。然后我在做错了。?请帮忙。感谢。

1 个答案:

答案 0 :(得分:2)

注意浮动到日志消息中行开头的单引号?您的数据文件的换行符可能为\r\n,但在Unix上运行效果不佳;回车被读作主机名的一部分。在其上运行dos2unix