如何在telnet连接响应中用grep检测foreign并获取正确的$?退出码?
解决telnet检测"foreign"时$?返回1的问题
问题根源在于telnet的部分输出(比如你看到的Connection closed by foreign host)是输出到标准错误流(stderr)的,而你原命令只将标准输出流(stdout)传递给grep,导致grep无法捕获到目标内容,最终返回状态码1。
直接在终端执行以下命令即可解决:
echo quit | telnet 192.0.0.1 443 2>&1 | grep -q "foreign"
其中2>&1的作用是将标准错误流重定向到标准输出流,让telnet的所有输出都能被grep检测到。执行完该命令后,再运行echo $?就会返回0。
内容的提问来源于stack exchange,提问作者cpd1
相关产品推荐
相关产品推荐

