gpt4 book ai didi

linux - 当输出文件有字符串时发送电子邮件的 Netcat 脚本

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:18:57 24 4
gpt4 key购买 nike

我正在尝试做一个 sh 脚本来 netcat 一个 IP 并在端口没有应答时发送一封电子邮件。

到目前为止我已经有了这个,但我认为脚本正在运行并且输出文件已填写,但我收到的邮件是空的。我通过在输出文件中用 vi 写一些东西来调试它,我确实收到了包含我所写内容的电子邮件。

这是脚本:

netcat -z -v -w x.x.x.x 23 > /path/resultt.txt 2>&1
if grep -q "timed out" /path/resultt.txt ;
then
ssmtp email@gmail.com < /path/resultt.txt
else
echo
fi

我认为这与执行 2>&1

有关

最佳答案

您使用 2>&1 或“将 stderr 发送到与 stdout 相同的位置”应该没有问题。在最后一个参数是数字的情况下,我想确保我的重定向有 fd 数字。但是,没有它,您的也能正常工作。

我在这个演示中使用了基于公共(public)远程登录的服务。它应该适用于任何人,但与所有免费的东西一样,它可能不会永远存在。

$ nc telnetmyip.com 23 > /tmp/out 2>&1

$ cat /tmp/out
{


"comment": "## Your IP Address is 96.67.120.126 (59742) ##",


"family": "ipv4",
"ip": "96.67.120.126",
"port": "59742",
"protocol": "telnet",
"version": "v1.1.0",
"website": "https://github.com/packetsar/checkmyip"
}

所以,这完全符合预期。

现在,您说“但我收到的邮件是空的”。根据您的代码,只有在文件中存在“超时” 时才会发送电子邮件。因此,如果您没有以正确的方式正确的文件提供给ssmtp,则发送空电子邮件的唯一方法。 p>

您可能需要考虑像 https://wiki.archlinux.org/index.php/SSMTP#Sending_email 中的示例一样进行操作

# only do this once
$ cat > header.txt <<'EOF'
To:email@gmail.com
From:youraccount@gmail.com
Subject: telnet resulted in a timeout

Hello, admin. I hope this doesn't ruin your day.

The command `netcat -z -v -w x.x.x.x 23 > /path/resultt.txt` resulted in this:
EOF

$ cat header.txt /path/resultt.txt | sendmail -t

希望对您有所帮助。最后我要重复一遍:发送空电子邮件的唯一方法是,如果您没有以正确的方式正确的文件提供给ssmtp em>。 (假设您已手动确认ssmtp在此环境下工作。)

关于linux - 当输出文件有字符串时发送电子邮件的 Netcat 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46551989/

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