使用 grep 在 telnet 连接的输出中查找单词

use grep to find a word in the output from telnet connection

提问人:cpd1 提问时间:10/5/2023 最后编辑:cpd1 更新时间:10/5/2023 访问量:46

问:

我想使用 telnet 连接到系统并检查是否在响应中。foreign

我正在尝试......

echo quit | telnet 192.0.0.1 443 | grep -q "foreign"

因为成功的连接意味着在字符串中找到了“外来”。这是因为在输出中我得到了类似的东西......

Trying 192.0.0.1
Connected to 192.0.0.1
Connection closed by foreign host

但是,如果我检查,我会得到一个指示,它无法找到该单词。我的猜测是这是由于多行输出。echo $?1

有没有办法处理这个问题,所以我从?0echo $?

必须通过终端完成 - 没有脚本等。

而且必须是telnet

Linux grep telnet

评论

2赞 Barmar 10/5/2023
该消息可能是写给 stderr 的,而不是 stdout。
0赞 Barmar 10/5/2023
netcat是比 更好的测试网络连接的工具。telnet
0赞 cpd1 10/5/2023
Telnet 是唯一的选择

答:

1赞 Gilles Quénot 10/5/2023 #1

我会做什么:

{ sleep 1; echo quit; } | telnet 192.0.0.1 443 2>&1 | grep -q "foreign"

或与:bash

{ sleep 1; echo quit; } | telnet 192.0.0.1 443 |& grep -q "foreign"

重试后:

until [[ $out == *foreign* ]]; do
    out=$({ sleep 1; echo quit; } | telnet 192.0.0.1 443 |& grep "foreign")
    sleep 1
done

评论

0赞 cpd1 10/5/2023
会试一试 - 谢谢!
0赞 Gilles Quénot 10/5/2023
添加了循环方式。
0赞 cpd1 10/5/2023
谢谢!我意识到我在语法方面有问题,所以第一个可能有效,但在必要时也有帮助。