测试netcat侦听器是否获得连接并在本地运行命令

时间:2018-04-02 17:49:47

标签: bash netcat

我需要一种从shell脚本触发netcat侦听器的方法,如果收到连接,我需要在同一本地侦听器机器上运行命令,而不会中断netcat进程/连接 它就像-e选项,但我需要在保持netcat连接运行的同时在本地运行命令

我真的不知道是否可以完成我的意思是在shell进程分叉后,netcat子进程可以与nc的输出进行交互,例如在netcat退出之前运行其他命令吗?

编辑:我认为通过检查初始send()消息的返回值来确定客户端C代码端是否更容易,以确定如果我们获得发送的消息长度,客户端是否连接成功

sret = send(sock, message, strlen(message), 0);
if (sret == strlen(message)) // We're Connected
   do something

由于

1 个答案:

答案 0 :(得分:1)

这将检查初始nc进程是否已开始侦听,它将回显它收到的每一行输入,然后发回Received响应:

rm -f input.txt
touch input.txt

tail -f input.txt | nc -l 5555 > output.txt &

if ! ps -p $! >/dev/null; then
    echo "Netcat didn't start. Exiting..."
    exit 1
fi

tail -f output.txt | while read -r LINE; do
    echo "Received input: $LINE"
    echo "Received" >> input.txt
done

看看你是否可以根据自己的需要进行调整。