gpt4 book ai didi

linux - 如何在 bash 脚本中的流水线命令之间插入延迟。例如。猫文件 | telnet mail.domain.com 25

转载 作者:IT王子 更新时间:2023-10-29 00:25:10 25 4
gpt4 key购买 nike

我有一个创建文件的 bash 脚本,我想在最后通过 telnet 发送一封电子邮件。然而,有时它会执行,有时不会。

最后的命令是

cat tempfile | telnet mail.domain.com 25

在接收服务器失败时,我在 mail.log 中看到以下错误:

improper command pipelining after EHLO from domain.com ....etc

如果我在 localhost 中启动 telnet session 而不是 mail.domain.com,则相同的脚本可以完美运行,所以我很确定文件格式是正确的,bash 脚本的其余部分也可以正常工作。

我也尝试过使用标准重定向而不是管道

telnet mail.domain.com 25 < tempfile

但结果有时还可以,有时却不行。我认为重定向和 telnet session 命令之间需要有一个小的延迟,以便在建立 telnet session 并给出响应后给出输入,但我不知道该怎么做。我试过在管道和重定向之间使用 sleep 命令,但它不起作用可能是因为输入被重定向到 sleep 命令。

e.g. cat tempfile | telnet mail.domain.com 25 & sleep 1

限制是我必须在 bash 脚本中进行。可能吗?我也不知道它是否重要,但该脚本过去曾在 debian squeeze 中的服务器之间使用 postfix/courier 设置,现在接收端设置为 debian wheezy 和 postfix/dovecot。

在此先感谢您的帮助

最佳答案

你可以尝试这样的事情:

(echo -n; sleep 5; cat tempfile) | mail.domain.com 25

打开连接什么也不写,等5秒再写剩下的。

关于linux - 如何在 bash 脚本中的流水线命令之间插入延迟。例如。猫文件 | telnet mail.domain.com 25,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19325355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com