【发布时间】:2019-12-25 00:50:55
【问题描述】:
逐行有效,但在脚本中却不行。
我尝试了所有我能想到的。
这在 bash 2.05 中不起作用
{ sleep 1; echo "helo localhost"; sleep 1; echo "mail from: test@maillinux.net"; sleep 1; echo "rcpt to: user@actualdomain.org"; sleep 1; echo "data"; sleep 1; echo "subject: test"; echo; echo "some text" ;echo "."; echo "quit"; } | telnet mailserver.actualdomain.org 25
但如果你逐行进行
telnet mailserver.actualdomain.org 25
220...
helo localhost
250...ok
mail from: test@maillinux.net
250..ok
rcpt to: user@actualdomain.org
250...ok
data
354 Start mail input; end with <CRLF>.<CRLF>
subject: test
some text
.
quit
然后它工作,我收到邮件。 该脚本在较新的 bash 4.4 中工作,但我需要它在 2.05 中工作。 在我看来,它不回声“。”等结束并没有完成邮件......因此不发送它。 但是为什么???
我希望它发送邮件,但它没有
【问题讨论】:
-
在
echo "quit"后面加上sleep有什么不同吗? -
是的! :) 最后睡觉...aaaa 我怎么没想到。谢谢
-
但为什么它在 bash 4.4 中有效?
-
如果我用
sleep 2替换每个sleep 1并在echo "quit;"之后添加一个sleep 2;,它适用于我的bash 2.05 和4.3.48。时间问题? -
是的,也许是时机问题。我现在得到 250 ..响应邮件排队等待投递...在最后睡眠 1 之前我没有得到。它刚刚被外国主机关闭了连接。