Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 邮件命令行为不端_Linux_Shell - Fatal编程技术网

Linux 邮件命令行为不端

Linux 邮件命令行为不端,linux,shell,Linux,Shell,我已经编写了shell脚本来自动设置用户配额。我有quota.csv,我从那里获取用户名并向他们发送第一封邮件,然后为该用户设置配额。 当我执行该脚本时,邮件已发送到我们域的所有用户,这是不应该发生的。邮件应仅发送给quota.csv中可用的用户 下面是我的剧本 #!/bin/bash #set -vx DIR=/home/opr/administration/quotaset/ LOGFILE=setquota.log DATA="Dear User, \n \n \t Your acc

我已经编写了shell脚本来自动设置用户配额。我有quota.csv,我从那里获取用户名并向他们发送第一封邮件,然后为该用户设置配额。 当我执行该脚本时,邮件已发送到我们域的所有用户,这是不应该发生的。邮件应仅发送给quota.csv中可用的用户

下面是我的剧本

#!/bin/bash

#set -vx

DIR=/home/opr/administration/quotaset/
LOGFILE=setquota.log

DATA="Dear User,
\n \n \t Your account has been successfully created at Mailhost please take note of the following.
\n \n \t There is a phishing attempt (An email with the subject 'Tata Institute of
Fundamental Research Internet User' has been circulating.) to collect your
id and password of mailhost. This is not legitimate. Please do not disclose
it in any form to anybody even to Computer Centre staff.

If you are in doubt please call Computer Centre staff at 2121

\n \n -Raghavan"

EMAIL=@tifr.res.in

QuotaFILE=quota.csv

cd $DIR

QuotaFILE=`ls -1 quota.csv`

if [ -f "$QuotaFILE"  ]
then
    echo "Script started on `date`" >> $DIR/$LOGFILE

    while read line
    do
        echo -e $DATA | mail -s "Welcome to TIFR Mailhost" -c "msagar@tifr.res.in" "$line$EMAIL"
        edquota -p proto $line
    done < $QuotaFILE

    echo "Script Ended On `date`" >> $DIR/$LOGFILE
else
    exit 
fi
#/bin/bash
#set-vx
DIR=/home/opr/administration/quotaset/
LOGFILE=setquota.log
DATA=“亲爱的用户,
\n\n\t您的帐户已在Mailhost上成功创建,请注意以下事项。
\n\n\t有网络钓鱼企图(主题为“塔塔研究所”的电子邮件)
基础研究互联网用户’已经流传。)收集您的
邮件主机的id和密码。这是不合法的。请不要透露
它以任何形式提供给任何人,甚至是计算机中心的工作人员。
如有疑问,请致电2121与电脑中心职员联络
\n\n-Raghavan“
电子邮件=@tifr.res.in
QuotaFILE=quota.csv
cd$DIR
QuotaFILE=`ls-1 quota.csv`
如果[-f“$QuotaFILE”]
然后
echo“脚本开始于`date`>$DIR/$LOGFILE
读行时
做
echo-e$DATA | mail-s“欢迎使用TIFR邮件主机”-c”msagar@tifr.res.in“$line$EMAIL”
edquota-p proto$行
完成<$QuotaFILE
echo“脚本结束于`date`>$DIR/$LOGFILE
其他的
出口
fi
如果mail命令找不到用户名,它会向域的所有用户发送邮件吗

如果你需要更多的细节,我可以给你,因为我认为这似乎是我的脚本或邮件命令中的错误

请回复


先谢谢你

一个问题是如何尝试分配
数据
herdoc可以使内容更具可读性,并防止多行字符串的格式问题

DATA=$(cat<< EOF
Dear User,

    Your account has been successfully created at Mailhost please take note 
of the following.

    There is a phishing attempt (An email with the subject 'Tata Institute of
Fundamental Research Internet User' has been circulating.) to collect your
id and password of mailhost. This is not legitimate. Please do not disclose
it in any form to anybody even to Computer Centre staff.

If you are in doubt please call Computer Centre staff at 2121

-Raghavan
EOF)
应该是:

QuotaFILE=quota.csv
由于不知道quota.csv
quota.csv中的内容,您还应使用以下方法防止转义序列的解释:

while read -r line
还应使用大括号保护以下内容:

"$line$EMAIL"
改为:

"${line}${EMAIL}"
最后,也是更重要的一点,除非您的
邮件
程序具有允许
@domain
代表向系统所有用户发送邮件的特殊功能,否则您尝试向
@domain
发送邮件将失败,因为
@domain
不是有效的电子邮件地址,smtp主机很可能无法确定是否应允许服务,也无法确定整个主机是否存在其他邮件RFC冲突


请尝试更正,并验证您是否有允许发送到
@domain
的内容,如果没有,那就是您的问题。

为了进一步提供帮助,您需要发布
quota.csv
的前几行内容。寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现它所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:。我的问题只是mail命令的工作原理。如果我给出的命令如下mail-s“TEST mail”“@mydomain.com”,那么我就没有抓住你问题的重点。您应该查看文档中的
邮件
。通常,这只是一个错误,因为邮件主机在决定是否接受它时没有要检查的
用户
@domain
只是一个无效的电子邮件地址。你在用什么邮件程序<代码>邮件
<代码>邮件
传家宝邮件
,或者其他什么?如果你要投反对票,至少要诚实地解释为什么?不要只是躲在匿名的反对票后面,因为这个问题已经离题了。我不喜欢回答离题的问题。为了改变这一点,我听从了《为什么你这么麻烦否决票》的一些建议?你会被猛然惊醒的。一句简单的“我想你误读了这个问题”就更进一步了。但许多SO的“耳朵后湿”用户似乎不得不通过向下投票让自己感觉更重要。悲哀的
"${line}${EMAIL}"