首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >netcat命令不符合逻辑地匹配字符串的结果

netcat命令不符合逻辑地匹配字符串的结果
EN

Stack Overflow用户
提问于 2011-07-29 13:04:44
回答 1查看 461关注 0票数 1

我想测试远程端口是开放的,如果我必须连接到telnet,VNC,Teamviewer等等。

我将有大约10个端口要测试,我正在为它做一个脚本。在这一点上,我附带了以下代码:

代码语言:javascript
复制
function testPort(){
        res=`nc -v $1 $2 < /dev/null`
        echo $res
        if [[ "$res" == *refused* ]]
        then
                echo "refused"
                return 0
        else
                echo "accepted"
                return 1
        fi

}

if test -z "$1"
then
        echo "What's the adress?"
        read IP
else
        IP="$1"
fi

testPort $IP 80

echo $res的结果类似于:

代码语言:javascript
复制
nc: connect to 192.168.0.110 port 80 (tcp) failed: Connection refused
RFB 003.889 Connection to 192.168.0.110 5900 port [tcp/vnc-server] succeeded!

但在--任何的情况下,我都会显示“接受”。我搞不懂为什么。有人能解释一下我的错误在哪里吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-07-29 13:20:36

这是因为netcat将其消息写入标准错误,而不是标准输出。因此,变量res是空的,并且与*refused*不匹配。

您在控制台上看到netcat消息的原因并不是因为echo $res行,而是因为您没有捕获标准错误,所以它将转到控制台。

如果将testPort的第一行更改为:

代码语言:javascript
复制
    res=`nc -v $1 $2 < /dev/null 2>&1`

应该管用的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6873550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档