我有一个包含例如:
的文本文件user0@domain.com
user1@domain.com
user2@domain.com
user3@domain.com
和ssmtp.conf包含:
AuthUser=user0@domain.com
我怎样才能在第一行和sed
ssmtp.conf结束这一点:
AuthUser=user1@domain.com
我需要它睡几秒钟然后换到
AuthUser=user2@domain.com
等等。目前,在这里的几个用户的帮助下,这就是我所拥有的:
#!/bin/bash
y=4
for (( x=1; x<=y; x++ )); do
emails=`echo $( cat /home/apx/Desktop/emailaddresses.txt | sed -n ''$x''p )`
sed -i "/AuthUser/s/= .*/= $emails/" /etc/ssmtp/ssmtp.conf
ssmtp blahh@blahh.com -v < /home/apx/Desktop/message.txt
sleep 1
done
当我运行它时,它会循环4次。每次发送电子邮件时,它都会从user0@domain.com发送所有4个而不是user0,然后是user1,然后是user2,然后是user3,这是我一直在努力实现的目标。我刚刚意识到它根本没有变化。它只是保持我最后离开它的方式。如果有人能帮我理解我做错了什么,我将不胜感激。
答案 0 :(得分:0)
尝试这样的事情:
#! /bin/bash
while read -r addr; do
sudo m4 -Daddr="$addr" >/etc/ssmtp/ssmtp.conf <<<'AuthUser=addr'
sudo ssmtp blahh@blahh.com -v </home/apx/Desktop/message.txt
sleep 1
done </home/apx/Desktop/emailaddresses.txt
答案 1 :(得分:0)
#!/bin/bash
AddressSources=/home/apx/Desktop/emailaddresses.txt
# number of email
y=$( grep -c -e "${AddressSources}" )
# loop (from last to first email)
while [ ${y} -gt 0 ]
do
# catch the specific mail using the line number
email="$( sed "${y} !d" "${AddressSources}" )"
# adapt the ssmtp.conf
sed -i "s/^\(AuthUser=\).*/\1${email}/" /etc/ssmtp/ssmtp.conf
# send the message
ssmtp blahh@blahh.com -v < /home/apx/Desktop/message.txt
# wait and cycle to next email
sleep 1
let y-=1
done
while read
代替sed逐行接听并循环播放电子邮件答案 2 :(得分:0)
我正在使用gmail smtp服务器,如果您尝试在gmail上允许smtp,您应该允许此链接上的安全应用,您应该turn on
https://www.google.com/settings/security/lesssecureapps
以root用户身份执行此脚本
cp -avr /etc/ssmtp/ssmtp.conf . > /dev/null
echo "No. Of Msgs For each Email :";read number_of_messages;
echo "Destination Email: ";read Email
y=3
for (( x=1; x<=y; x++ ));
do
emails=`echo $( cat emails | sed -n ''$x''p )`
print_emails=`echo "$emails"`
smtp=`grep -E -o "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b" ssmtp.conf.bak`
cat ssmtp.conf | sed 's/'$smtp'/'$print_emails'/g' ssmtp.conf > /etc/ssmtp/ssmtp.conf
for (( f=1; f<=number_of_messages; f++ ));
do
ssmtp $Email < msg
sleep 5
done
done&
测试并且完美运行
首先我输入了4条为每封电子邮件发送4封邮件(checkmeoffon @ gmail.com,checkmeonoff @ gmail.com)
下一步checkmeoffon@gmail.com 4条消息
下一步checkmeonoff@gmail.com 4条消息