是否可以使用netcat进行条件响应

时间:2017-01-19 13:44:58

标签: bash netcat

我想运行netcat(netcat-openbsd 1.105-7ubuntu1)并模拟聊天序列。我想自动发送netcat响应。

我想要的例子。

NETCAT: nc -l 8080

CLIENT: nc localhost 8080

CLIENT: hello

NETCAT: (if statment) 
        if hello
           do hello friend

        if bye
           do bye friend
           send a FIN tcp 

        default
           date()

我复制了这个问题的代码(在@wooghie的asnwer中):run a command conditionally with netcat and grep ...但是消息没有被发送到客户端。 Netcat处于监听模式。

#!/bin/bash

netcat -l 8080 | while read line
do
    match=$(echo $line | grep -c 'Hello')
    if [ $match -eq 1 ]; then
        printf "Hello friend\r\n\r\n"
    fi
done

1 个答案:

答案 0 :(得分:0)

我认为你想要期待(1)。有点像:

#!/usr/bin/env expect
spawn nc localhost 8080
expect {
  hello {
     send "hello dude"
  } bye {
     close
  } -re .* {
     send [date]
  }
}

请注意,期望的确是Tcl,它本身就非常强大。
没有测试过。 YMMV。